Может ли программное обеспечение OCR надежно считывать значения из таблицы? - PullRequest
23 голосов
/ 30 мая 2011

Сможет ли OCR Software надежно перевести изображение, подобное следующему, в список значений?
Table of values

UPDATE:

Более подробно задание выглядит следующим образом:

У нас есть клиентское приложение, где пользователь может открыть отчет. Этот отчет содержит таблицу значений. Но не все отчеты выглядят одинаково - разные шрифты, разный интервал, разные цвета, возможно, отчет содержит много таблиц с разным количеством строк / столбцов ...

Пользователь выбирает область отчета, которая содержит таблицу. С помощью мыши.

Теперь мы хотим преобразовать выбранную таблицу в значения - с помощью нашего инструмента OCR.

В то время, когда пользователь выбирает прямоугольную область, я могу запросить дополнительную информацию чтобы помочь с процессом OCR и запросить подтверждение, что значения были правильно распознаны.

Первоначально это будет экспериментальный проект, и, следовательно, скорее всего, с инструментом оптического распознавания символов OpenSource - или, по крайней мере, с тем, который не стоит никаких денег для экспериментальных целей.

Ответы [ 7 ]

23 голосов
/ 31 мая 2011

Простой ответ ДА, вам просто нужно выбрать правильные инструменты.

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

Когда мы говорим о коммерческом оптическом распознавании символов, таком как ABBYY или другом, он обеспечит вам точность 99% + из коробки и автоматически обнаружит таблицы. Никаких тренировок, ничего, просто работает. Недостатком является то, что вы должны заплатить за это $$. Кто-то может возразить, что за открытый исходный код вы платите время, чтобы его настроить и поддерживать - но каждый сам решает здесь.

Однако, если мы говорим о коммерческих инструментах, на самом деле, у нас больше выбора. И это зависит от того, что вы хотите. Продукты в штучной упаковке, такие как FineReader, фактически нацелены на преобразование входных документов в редактируемые документы, такие как Word или Excell. Поскольку на самом деле вы хотите получать данные, а не документ Word, вам, возможно, придется взглянуть на другую категорию продуктов - сбор данных, который по сути является OCR, и некоторую дополнительную логику для поиска необходимых данных на странице. В случае счета-фактуры это могут быть название компании, общая сумма, срок оплаты, позиции в таблице и т. Д.

Сбор данных является сложным предметом и требует некоторого изучения, но при правильном использовании может обеспечить гарантированную точность при получении данных из документов. Он использует разные правила для перекрестной проверки данных, поиска в базе данных и т. Д. При необходимости он может отправлять данные для ручной проверки. Предприятия широко используют приложения Data Capture для ввода миллионов документов каждый месяц и в значительной степени полагаются на данные, извлекаемые в ходе их повседневной работы.

И, конечно же, есть OCR SDK, который предоставит вам API-доступ к результатам распознавания, и вы сможете программировать, что делать с данными.

Если вы опишите вашу задачу более подробно, я могу дать вам совет, в каком направлении легче идти.

UPDATE

Итак, в основном вы работаете с приложением Data Capture, но не полностью автоматизированы, используя так называемый подход «щелкнуть по индексу». На рынке существует множество подобных приложений: вы сканируете изображения и кликаете оператором по тексту на изображении (или рисуете прямоугольник вокруг него), а затем заполняете поля в базе данных. Это хороший подход, когда количество обрабатываемых изображений относительно невелико, а ручная рабочая нагрузка недостаточно велика, чтобы оправдать стоимость полностью автоматизированного приложения (да, есть полностью автоматизированные системы, которые могут создавать изображения с различным шрифтом, интервалом, макетом, количеством строки в таблицах и т. д.).

Если вы решили разрабатывать что-то и вместо покупки, тогда все, что вам нужно, это выбрать OCR SDK. Весь пользовательский интерфейс, который вы собираетесь написать самостоятельно, верно? Большой выбор - решить: с открытым исходным кодом или коммерческий.

Наилучший открытый исходный код - это Tessseract OCR, насколько я знаю. Это бесплатно, но могут иметь реальные проблемы с анализом таблиц, но при ручном подходе к зонированию это не должно быть проблемой. Что касается точности распознавания текста - люди часто обучают распознавание шрифтов для повышения точности, но это не должно быть для вас, так как шрифты могут отличаться. Так что вы можете просто попробовать тессеракт и посмотреть, какую точность вы получите - это повлияет на количество ручной работы по ее исправлению.

Коммерческое распознавание текста даст более высокую точность, но будет стоить вам денег. Я думаю, что вы все равно должны посмотреть, стоит ли это того, или tesserack достаточно хорош для вас. Я думаю, что самым простым способом было бы загрузить пробную версию некоторого коробочного продукта OCR, такого как FineReader. Тогда вы получите хорошее представление о точности OCR SDK.

19 голосов
/ 20 января 2013

Если у вас в таблице всегда есть сплошные границы, попробуйте следующее решение:

  1. Найдите горизонтальные и вертикальные линии на каждой странице (длинные чёрные пиксели)
  2. Разделить изображение на ячейки, используя координаты линии
  3. Очистить каждую ячейку (удалить границы, пороговое значение для черно-белого)
  4. Выполнить OCR для каждой ячейки
  5. Собратьрезультаты в двумерный массив

Если у вашего документа есть таблица без полей, вы можете попробовать выполнить следующую строку:

Оптическое распознавание символов - довольно удивительный материал,но это не всегда идеально.Чтобы получить наилучшие результаты, он помогает использовать максимально чистые данные.В своих первоначальных экспериментах я обнаружил, что выполнение оптического распознавания текста для всего документа на самом деле работает довольно хорошо, пока я удаляю границы ячеек (длинные горизонтальные и вертикальные линии).Однако программное обеспечение сжало все пустые места в одно пустое пространство.Поскольку мои входные документы имели несколько столбцов с несколькими словами в каждом столбце, границы ячеек терялись.Сохранение отношений между ячейками было очень важно, поэтому одним из возможных решений было нарисовать уникальный символ, такой как «^» на каждой границе ячейки - что-то, что OCR все равно распознал бы, и что я мог бы использовать позже, чтобы разбить получившиеся строки.

Я нашел всю эту информацию по этой ссылке, попросив Google "OCR to table".Автор опубликовал полный алгоритм с использованием Python и Tesseract , оба решения с открытым исходным кодом!

Если вы хотите попробовать мощь Tesseract, возможно, вам следует попробовать этот сайт:

http://www.free -ocr.com /

6 голосов
/ 30 мая 2011

О каком OCR вы говорите?
Будете ли вы разрабатывать коды на основе этого OCR или вы будете использовать что-то с полок?

К вашему сведению: Тессеракт OCR

В нем реализован исполняемый файл для чтения документов, поэтому вы можете подавать всю страницу целиком и извлекать символыдля тебя.Он хорошо распознает пробелы, может помочь с интервалом между табуляциями.

4 голосов
/ 06 февраля 2018

OCR сканирует документы с 98 года. Это повторяющаяся проблема для отсканированных документов, особенно для тех, которые содержат повернутые и / или перекошенные страницы.

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

Если коммерческий выбор угрожает вашему бюджету, OSS может помочь. Но "нет бесплатного обеда". Таким образом, вам придется положиться на кучу сделанных на заказ сценариев, чтобы создать доступное решение для обработки ваших документов. К счастью, вы не одиноки. Фактически, в последние десятилетия многие люди имели дело с этим. Итак, ИМХО, лучший и краткий ответ на этот вопрос дает эта статья:

https://datascience.blog.wzb.eu/2017/02/16/data-mining-ocr-pdfs-using-pdftabextract-to-liberate-tabular-data-from-scanned-documents/

Его чтение стоит! Автор предлагает свои полезные инструменты, но заключение статьи очень важно, чтобы дать вам хорошее представление о том, как решить эту проблему.

"Серебряной пули нет". (Фред Брукс, Митальный человеко-месяц )

3 голосов
/ 17 февраля 2017

Мы также столкнулись с проблемой распознавания текста в таблицах. Есть два решения, которые делают это из коробки, ABBYY Recognition Server и ABBYY FlexiCapture. Rec Server - это серверный инструмент для массового распознавания текста, предназначенный для преобразования больших объемов документов в формат с возможностью поиска. Хотя он доступен с API для этих типов использования, мы рекомендуем FlexiCapture. FlexiCapture обеспечивает низкоуровневый контроль извлечения данных из форматов таблиц, включая автоматическое определение элементов таблицы на странице. Он доступен в полной версии API без внешнего интерфейса или стандартной версии, которую мы продаем. Обратитесь ко мне, если вы хотите узнать больше.

3 голосов
/ 11 ноября 2015

Вы можете попробовать другой подход. С помощью tesseract (или другого OCRS) вы можете получить координаты для каждого слова. Затем вы можете попытаться сгруппировать эти слова по вертикальным и горизонтальным координатам, чтобы получить строки / столбцы. Например, чтобы сказать разницу между пробелом и табуляцией. Требуется некоторая практика, чтобы получить хорошие результаты, но это возможно. С помощью этого метода вы можете обнаружить таблицы, даже если таблицы используют невидимые разделители - без строк. Координаты слова являются твердой основой для таблицы recog

3 голосов
/ 30 мая 2011

Это действительно зависит от реализации.

Существует несколько параметров, которые влияют на способность распознавания текста:
1. Насколько хорошо обучен OCR - размер и качество базы данных примеров
2. Насколько хорошо он обучен обнаружению «мусора» (помимо того, что вы знаете, что такое буква, вы должны знать, что НЕ является буквой).
3. Конструкция и тип оптического распознавания текста
4. Если это нервная сеть, структура нейронной сети влияет на ее способность учиться и «решать».

Так что, если вы не делаете свой собственный, это просто вопрос тестирования разных видов, пока не найдете тот, который подходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...