Как проверить, содержит ли отсканированный документ адрес - PullRequest
0 голосов
/ 31 августа 2018

Мне нужно отсканировать документы и проверить, содержат ли они конкретные данные. Проще говоря, предположим, что мне нужно найти, содержит ли отсканированный счет конкретный адрес.

Указанный адрес для поиска может быть написан по-разному, по сравнению с тем, как он написан в документе, например ::100100

адрес для поиска (итальянский адрес): "Piazza Santa Rita 43, 10390, Турин (TO)

адрес в отсканированном документе может быть таким: "Турин, P.zza S.Rita 43, 10390, Турин" или же "Пицца С.Рита 43, 10390, Турин" и так далее

Я ищу способ найти "сходство" между данными для поиска, чтобы, если я найду текст, близкий, скажем, к 80%, я считаю его действительным документом

Помимо способа ввода адреса, возникает еще одна проблема: отсканированный документ может быть (в большинстве случаев будет) низкого качества, поэтому механизм распознавания может неверно истолковать какой-либо символ, давая плохие результаты (например, ' c 'стал' o ',' 3 'стал' B 'и т. д., поэтому я тоже хочу принять это во внимание

например. отсканированный документ может привести к "" Plzza S.Rita 4B, 1O390, Tcrinc "

Любой совет, как решить эту проблему?

На самом деле я разрабатываю это на Android, используя OpenCV для настольного изображения документа и Google Firebase ML-KIT для сканирования документа на устройстве (я не могу полагаться на внешние сервисы, я должен решить его на устройстве), так что Я должен решить эту проблему, используя Java и взглянув на текст, найденный в ml-kit ocr, но даже если у вас есть совет, который реализует это на других языках / платформах, подойдет для справки.

1 Ответ

0 голосов
/ 01 сентября 2018

Это действительно довольно сложный вопрос. Я считаю, что ваша лучшая ставка - нечеткое соответствие строк.
Есть несколько библиотек Java, которые должны быть вам полезны, например, JavaWuzzy .

Должны пригодиться такие функции, как extractX и sortX:

FuzzySearch.extractOne("cowboys", ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"])
(string: Dallas Cowboys, score: 90, index: 3)
FuzzySearch.tokenSortPartialRatio("order words out of","  words out of order")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...