Я использую API Google Vision для извлечения текста (рукописного и компьютерного) из изображений форм заявок. Ответ - длинная строка, подобная следующей.
Строка:
"A. Bank Challan
Bank Branch
ca
ABC muitce
Deposit ID VOSSÁETM-0055
Deposit Date 16 al 19
ate
B. Personal Information: Use CAPITAL letters and leave spaces between words.
Name: MUHAMMAD HANIE
Father's Name: MUHAMMAD Y AQOOB
Computerized NIC No. 44 603-5 284 355-3
D D M m rrrr
Gender: Male Age: (in years) 22 Date of Birth ( 4-08-1999
Domicile (District): Mirpuskhas Contact No. 0333-7078758
(Please do not mention converted No.)
Postal Address: Raheel Book Depo Naukot Taluka jhuddo Disstri mes.
Sindh.
Are You Government Servant: Yes
(If yes, please attach NOC)
No
✓
Religion: Muslim
✓
Non-Muslimo
C. Academic Information:
B
Intermediate/HSSC ENG Mirpuskhas Bise Match
Seience BISEmirpuskhas Match
2016
2014
Matric/SSC"
Весь ответ для меня бесполезен, однако мне нужно разобрать ответ, чтобы получить конкретные поля, такие как Имя, Имя отца, Номер сетевой карты, Пол, Возраст, DoB, Место жительства и Контактный номер.
Я определяю шаблоны для каждого из этих полей, используя библиотеку регулярных выражений (re) в Python. Например:
import re
name ='Name: \w+\s\w+'
fatherName = 'Father\'s Name: \w+\s\w+\s\w+'
age ='Age: \D+\d+'
print(re.search(name,string).group())
print(re.search(fatherName, string).group())
print(re.search(age,string).group())
Выход:
"Name: MUHAMMAD HANIE
Father's Name: MUHAMMAD Y AQOOB
Age: (in years) 22"
Однако это не надежные шаблоны, и я не знаю, хорош этот подход или нет. Я также не могу извлечь поля, находящиеся в одной строке, такие как Пол и Возраст.
Как мне решить эту проблему?