Google Vision: извлекайте достоверность каждого слова после извлечения всего текста, используя full_text_annotation.text - PullRequest
0 голосов
/ 27 июня 2019

Я использую

def detect_document(path):
     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)

     text = response.full_text_annotation.text
     text = text.casefold()
     text = text.replace('(','')
     text = text.replace(')','')
     text = text.replace(':','')
     text = text.replace('.','')

     return text

для извлечения следующего текста из формы заявки, заполненной почерком

a bank challan
bank branch abc mute deposit id 005saetm-0055 deposit date 14 ml 19
b personal information use capital letters and leave spaces between words
name muhammad hanif tiid
father's name muhammad yaqoob tiittitttt
computerized nic no 44 303-5214 345-3
d d m m y y y y
gender male age in years 22 date of birth  4-08-1999
domicile district mirpuskhas contact no 0333-7072258
please do not mention converted no
postal address anmol book depo naukot taluka jhuddo disstti mps
sindh
are you government servant yes
if yes, please attach noc
no
✓
religion muslim
✓
non-muslim o
c academic information
intermediate/hssc eng mirpuskhas bise match b 2016
matric/ssc seience bisemirpurkhang match a 2014
d any other certifications/diploma/professional degrees shorthand, dit, cit etc
name
le

, затем использую шаблоны регулярных выражений для получения enter image description here

Теперь я хочу создать журнал для всей обработки для каждого поля

<name>

<origin>

muhammad hanif tiid 

</origin>

<originscore>

78.2

</originscore>

<final>

muhammad hanif

</final>

<corrections>

4

</corrections>

</name>

Для этого мне нужно показатель достоверности .Я не знаю, как получить показатель доверия для таких проанализированных полей.Я пытался получить уверенность в каждом извлеченном слове, например

A: 0.9900000095367432
.: 0.9900000095367432
Bank: 0.9900000095367432
Challan: 0.9900000095367432
Bank: 0.9900000095367432
Branch: 0.9900000095367432
ABC: 0.9900000095367432
mute: 0.6700000166893005
Deposit: 0.8500000238418579
ID: 0.8100000023841858
005SAETM: 0.6499999761581421
-: 0.2800000011920929
0055: 0.8500000238418579
Deposit: 0.9200000166893005
Date: 0.9900000095367432
14: 0.6399999856948853
ml: 0.5400000214576721
19: 0.550000011920929
B: 0.9900000095367432
.: 0.9900000095367432
Personal: 0.9900000095367432
Information: 0.9900000095367432
:: 0.9900000095367432
Use: 0.9399999976158142
CAPITAL: 0.9900000095367432
letters: 0.9900000095367432
and: 0.9900000095367432
leave: 0.9900000095367432
spaces: 0.9900000095367432
between: 0.9900000095367432
words: 0.9900000095367432
.: 0.9900000095367432
Name: 0.9900000095367432
:: 0.9800000190734863
MUHAMMAD: 0.9599999785423279
HANIF: 0.9399999976158142
TIID: 0.46000000834465027
Father: 0.9900000095367432
': 0.9800000190734863

, которое не решает проблему.

Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 27 июня 2019

Заменить этот фрагмент кода:

text = response.full_text_annotation.text
     text = text.casefold()
     text = text.replace('(','')
     text = text.replace(')','')
     text = text.replace(':','')
     text = text.replace('.','')

     return text

на:

for page in response.full_text_annotation.pages:
    for block in page.blocks:
        for paragraph in block.paragraphs:
            for word in paragraph.words:
                word_text = ''.join([
                    symbol.text for symbol in word.symbols
                ])
                print('{}: {}'.format(
                    word_text, word.confidence))

Пример вывода

...