python - 使用 Google Cloud Vision API 从申请表中提取手写文本

标签 python google-cloud-platform google-cloud-vision

我想使用 Google Vision API 的文本检测功能从申请表中提取手写文本。它极大地提取了手写文本,但给出了非常无组织的 JSON 类型响应,我不知道如何解析它,因为我只想提取特定字段,如姓名、联系电话、电子邮件等,并将它们存储到 MySQL 数据库中。

代码(https://cloud.google.com/vision/docs/detecting-fulltext#vision-document-text-detection-python):

def detect_document(path):
    """Detects document features in an image."""
    from google.cloud import vision
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = vision.types.Image(content=content)

    response = client.document_text_detection(image=image)

    for page in response.full_text_annotation.pages:
        for block in page.blocks:
            print('\nBlock confidence: {}\n'.format(block.confidence))

            for paragraph in block.paragraphs:
                print('Paragraph confidence: {}'.format(
                    paragraph.confidence))

                for word in paragraph.words:
                    word_text = ''.join([
                        symbol.text for symbol in word.symbols
                    ])
                    print('Word text: {} (confidence: {})'.format(
                        word_text, word.confidence))

                    #for symbol in word.symbols:
                    #    print('\tSymbol: {} (confidence: {})'.format(
                    #        symbol.text, symbol.confidence))

Input Image

API 响应:

'Block confidence: 0.9900000095367432

Paragraph confidence: 0.9900000095367432
Word text: A (confidence: 0.9900000095367432)
Word text: . (confidence: 0.9900000095367432)
Word text: Bank (confidence: 0.9900000095367432)
Word text: Challan (confidence: 0.9900000095367432)
Paragraph confidence: 0.9900000095367432
Word text: Bank (confidence: 0.9900000095367432)
Word text: Branch (confidence: 0.9800000190734863)

Block confidence: 0.44999998807907104

Paragraph confidence: 0.44999998807907104
Word text: ca (confidence: 0.44999998807907104)

Block confidence: 0.7099999785423279

Paragraph confidence: 0.7099999785423279
Word text: ABC (confidence: 0.9900000095367432)
Word text: muitce (confidence: 0.5699999928474426)

Block confidence: 0.7400000095367432

Paragraph confidence: 0.7400000095367432
Word text: Deposit (confidence: 0.8700000047683716)
Word text: ID (confidence: 0.6700000166893005)
Word text: VOSSÁETM (confidence: 0.5400000214576721)
Word text: - (confidence: 0.7900000214576721)
Word text: 0055 (confidence: 0.9300000071525574)

Block confidence: 0.800000011920929

Paragraph confidence: 0.800000011920929
Word text: Deposit (confidence: 0.9800000190734863)
Word text: Date (confidence: 0.9200000166893005)
Word text: 14 (confidence: 0.47999998927116394)
Word text: al (confidence: 0.27000001072883606)
Word text: 19 (confidence: 0.800000011920929)

Block confidence: 0.9900000095367432

Paragraph confidence: 0.9900000095367432
Word text: ate (confidence: 0.9900000095367432)

Block confidence: 0.9900000095367432

Paragraph confidence: 0.9900000095367432
Word text: B (confidence: 0.9900000095367432)
Word text: . (confidence: 0.9900000095367432)
Word text: Personal (confidence: 0.9900000095367432)
Word text: Information (confidence: 0.9900000095367432)
Word text: : (confidence: 0.9900000095367432)
Word text: Use (confidence: 0.9900000095367432)
Word text: CAPITAL (confidence: 0.9900000095367432)
Word text: letters (confidence: 0.9900000095367432)
Word text: and (confidence: 0.9900000095367432)
Word text: leave (confidence: 0.9900000095367432)
Word text: spaces (confidence: 0.9900000095367432)
Word text: between (confidence: 0.9900000095367432)
Word text: words (confidence: 0.9900000095367432)
Word text: . (confidence: 0.9900000095367432)

Block confidence: 0.9100000262260437

Paragraph confidence: 0.8999999761581421
Word text: Name (confidence: 0.9900000095367432)
Word text: : (confidence: 0.9700000286102295)
Word text: MUHAMMAD (confidence: 0.9599999785423279)
Word text: HANIE (confidence: 0.9200000166893005)
Word text: Father (confidence: 0.9900000095367432)
Word text:  (confidence: 0.9900000095367432)
Word text: s (confidence: 1.0)
Word text: Name (confidence: 0.9900000095367432)
Word text: : (confidence: 0.9900000095367432)
Word text: MUHAMMAD (confidence: 0.9100000262260437)
Word text: Y (confidence: 0.8399999737739563)
Word text: AQOOB (confidence: 0.8500000238418579)
Word text: Computerized (confidence: 0.9800000190734863)
Word text: NIC (confidence: 0.9900000095367432)
Word text: No (confidence: 0.5400000214576721)
Word text: . (confidence: 0.9100000262260437)
Word text: 77 (confidence: 0.8899999856948853)
Word text: 356 (confidence: 0.8100000023841858)
Word text: - (confidence: 0.699999988079071)
Word text: 5 (confidence: 0.8600000143051147)
Word text: 284 (confidence: 0.5699999928474426)
Word text: 345 (confidence: 0.800000011920929)
Word text: - (confidence: 0.41999998688697815)
Word text: 3 (confidence: 0.8199999928474426)
Paragraph confidence: 0.8999999761581421
Word text: D (confidence: 0.699999988079071)
Word text: D (confidence: 0.5600000023841858)
Word text: M (confidence: 0.6700000166893005)
Word text: m (confidence: 0.6600000262260437)
Word text: rrrr (confidence: 0.6600000262260437)
Word text: Gender (confidence: 0.9900000095367432)
Word text: : (confidence: 1.0)
Word text: Male (confidence: 0.9900000095367432)
Word text: Age (confidence: 0.9800000190734863)
Word text: : (confidence: 0.9700000286102295)
Word text: ( (confidence: 0.9399999976158142)
Word text: in (confidence: 0.9700000286102295)
Word text: years (confidence: 0.9900000095367432)
Word text: ) (confidence: 0.9599999785423279)
Word text: 24 (confidence: 0.6499999761581421)
Word text: Date (confidence: 0.9900000095367432)
Word text: of (confidence: 0.9900000095367432)
Word text: Birth (confidence: 0.9900000095367432)
Word text: ( (confidence: 0.12999999523162842)
Word text: 4 (confidence: 0.9399999976158142)
Word text: - (confidence: 0.8999999761581421)
Word text: 06 (confidence: 0.9100000262260437)
Word text: - (confidence: 0.7400000095367432)
Word text: 1999 (confidence: 0.5099999904632568)
Word text: Domicile (confidence: 0.9900000095367432)
Word text: ( (confidence: 0.949999988079071)
Word text: District (confidence: 0.9900000095367432)
Word text: ) (confidence: 0.9900000095367432)
Word text: : (confidence: 0.9599999785423279)
Word text: Mirpuskhas (confidence: 0.8399999737739563)
Word text: Contact (confidence: 0.9399999976158142)
Word text: No (confidence: 0.9100000262260437)
Word text: . (confidence: 0.9900000095367432)
Word text: 0333 (confidence: 0.9900000095367432)
Word text: - (confidence: 0.9800000190734863)
Word text: 7072258 (confidence: 0.9900000095367432)
Paragraph confidence: 0.9200000166893005
Word text: ( (confidence: 0.9900000095367432)
Word text: Please (confidence: 0.9900000095367432)
Word text: do (confidence: 0.9800000190734863)
Word text: not (confidence: 1.0)
Word text: mention (confidence: 0.9900000095367432)
Word text: converted (confidence: 0.949999988079071)
Word text: No (confidence: 0.9900000095367432)
Word text: . (confidence: 0.9900000095367432)
Word text: ) (confidence: 0.9800000190734863)
Word text: Postal (confidence: 0.9900000095367432)
Word text: Address (confidence: 0.9800000190734863)
Word text: : (confidence: 0.9900000095367432)
Word text: Wasdev (confidence: 0.9300000071525574)
Word text: Book (confidence: 0.8799999952316284)
Word text: Depo (confidence: 0.9599999785423279)
Word text: Digri (confidence: 0.9599999785423279)
Word text: Taluka (confidence: 0.9900000095367432)
Word text: jhuddo (confidence: 0.9700000286102295)
Word text: Disstri (confidence: 0.7599999904632568)
Word text: mes (confidence: 0.38999998569488525)
Word text: . (confidence: 0.1899999976158142)

Block confidence: 0.9399999976158142

Paragraph confidence: 0.9399999976158142
Word text: Sindh (confidence: 0.9700000286102295)
Word text: . (confidence: 0.75)

Block confidence: 0.9800000190734863

Paragraph confidence: 0.9800000190734863
Word text: Are (confidence: 0.9900000095367432)
Word text: You (confidence: 0.9900000095367432)
Word text: Government (confidence: 0.9800000190734863)
Word text: Servant (confidence: 0.9900000095367432)
Word text: : (confidence: 0.9900000095367432)
Word text: Yes (confidence: 0.9900000095367432)
Word text: ( (confidence: 0.9900000095367432)
Word text: If (confidence: 0.7599999904632568)
Word text: yes (confidence: 0.9700000286102295)
Word text: , (confidence: 0.9900000095367432)
Word text: please (confidence: 0.9900000095367432)
Word text: attach (confidence: 0.9900000095367432)
Word text: NOC (confidence: 0.9900000095367432)
Word text: ) (confidence: 0.949999988079071)

Block confidence: 0.9900000095367432

Paragraph confidence: 0.9900000095367432
Word text: No (confidence: 0.9900000095367432)

Block confidence: 0.20999999344348907

Paragraph confidence: 0.20999999344348907
Word text: ✓ (confidence: 0.20999999344348907)

Block confidence: 0.9700000286102295

Paragraph confidence: 0.9700000286102295
Word text: Religion (confidence: 0.9599999785423279)
Word text: : (confidence: 0.9900000095367432)
Word text: Muslim (confidence: 0.9900000095367432)

Block confidence: 0.3799999952316284

Paragraph confidence: 0.3799999952316284
Word text: ✓ (confidence: 0.3799999952316284)

Block confidence: 0.9599999785423279

Paragraph confidence: 0.9599999785423279
Word text: Non (confidence: 0.9300000071525574)
Word text: - (confidence: 0.9399999976158142)
Word text: Muslimo (confidence: 0.9700000286102295)'

最佳答案

将整个“for 循环”替换为 print (response.full_text_annotation.text)

关于python - 使用 Google Cloud Vision API 从申请表中提取手写文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065772/

相关文章:

python - 如何在 Go 应用程序中创建多个 Python 实例

python - 带有 *args 的 lambda 表达式

node.js - 使用 App Engine Node JS 标准的过滤器进行云数据存储投影查询

google-cloud-platform - 将多个聚合添加到 google_monitoring_alert_policy

python - 在 Python 中从 Cloud Vision API 格式化 OCR 文本注释

javascript - 在 Firebase Cloud Functions 中使用 Google Vision API 时出现类型错误

python - ImportError:没有名为 visual 的模块

python - 从图像文件列表创建 pandas 数据框

google-cloud-platform - 谷歌云视觉API "PERMISSION_DENIED"

java - Google App Engine 不支持 vision api Runtime.addShutdownHook 错误