Я хочу извлечь данные таблицы из изображений или отсканированных документов и сопоставить поля заголовка с их конкретными значениями в основном в страховом документе. Я попытался извлечь их построчно, а затем отобразить их, используя их положение на странице. Я определил границу таблицы, определив начальный и конечный сводные таблицы, но это не дает мне должного результата, поскольку иногда заголовки имеют несколько строк (я реализовал это в php). Я также хочу знать, могу ли я использовать машинное обучение для достижения того же.
Для документов PDF я использовал Табула-ява который работал очень хорошо для меня. Существует ли аналогичный тип реализации для изображений?
Документы были бы того же типа, что и в приведенной выше ссылке, но разных поставщиков услуг, поэтому общий метод извлечения таких данных был бы очень полезен.
На изображении выше я хочу, чтобы значения карты были такими, как Make = YAMAHA, MODEL = FZ-S, CC = 153 и т. Д.
Благодарю.
Я бы окончательно Тессеракт, очень хороший OCR-движок. Я успешно использовал его для чтения всех видов документов, встроенных в электронные письма (PDF, изображения), и мой коллега использовал его для чего-то очень похожего на ваш вариант использования — для чтения определенных полей из счетов.
После того, как вы проанализируете документ, просто используйте regex, чтобы выбрать интересующие вас поля.
Я не думаю, что машинное обучение было бы особенно полезно для вас, если вы не планируете создавать свой собственный механизм OCR. Я бы начал с существующих библиотек, они предлагают очень хорошую производительность.
Самый простой и надежный способ сделать это без особых знаний в OCR — это:
— Возьмите пустой шаблон для справки и отметьте координаты полей, из которых вам нужно извлечь данные. Пометьте их и сохраните для дальнейшего использования. Это будет сделано только один раз для каждого шаблона.
— Теперь при чтении того же шаблона измените его размер, чтобы он соответствовал размерам эталонных шаблонов (если он еще не совпадает).
— У вас уже есть координаты каждого блока и вы знаете, какие данные в нем должны содержаться (потому что вы пометили их и сохранили на первом шаге).
Это означает, что теперь вы можете просто анализировать пиксели, содержащиеся в каждом блоке, чтобы узнать, что там написано.
Это означает, что при наличии списка помеченных блоков (который вы извлекли на первом шаге) вы сможете получить данные в каждом из этих блоков. Если эти данные напечатаны и не написаны от руки, извлеченные данные будет легче анализировать или делать с ними что угодно, используя простые библиотеки OCR.
Или, если данные всегда имеют одинаковый размер и шрифт, как в приведенном выше примере шаблона, вы можете просто создать свою небольшую базу данных букв этого шрифта и размера. или, может быть, полные слова? Зависит от возможных ответов каждого ящика.
В любом случае, это далеко не лучший подход, но он определенно сделает работу с минимальными усилиями и знаниями в OCR.