Logstream – автоматизация процессов обработки документов

Наш сайт использует файлы соокіе чтобы улучшить работу сайта, повысить его эффективность и удобство. Управлять cookie можно в настройках браузера. Продолжая использовать сайт, вы соглашаетесь на использование файлов cookie, в соответствии с политикой конфиденциальности.

Анализ таблиц в системе «ЭКО-ДОК OCR»

Одна из задач анализа сканов документов – извлечение данных из таблиц. Этой задаче посвящены ряд публикаций, имеются открытые и online-решения.
Logstream также решает задачу анализа и извлечения табличных данных.
В статье представлены ключевые шаги анализа таблиц в системе электронного документооборота «ЭКО-ДОК OCR». Именно эти технологии «ЭКО-ДОК OCR» используются в высокотехнологичной платформе обработку документов BIOM Data Transformation (https://logstream.ru/biom-data-transformation/). Вопросы многостраничных таблиц не рассматриваются.
В «ЭКО-ДОК OCR» задача разбора структуры таблиц возложена на подсистему ИИ.
В отличие от некоторых решений, где допускается низкое качество сканов, в «ЭКО-ДОК OCR» на стадию ИИ поступают изображения после предварительной очистки и фильтрации. Такой шаг является практически неизбежным, так как качество изображения сказывается и на качестве OCR.
Таким образом, результаты ИИ оцениваются на основе наборов изображений, предварительно очищенных от дефектов.
Не касаясь довольно сложной задачи модуля ИИ в системе «ЭКО-ДОК OCR», ограничимся тем, что каждое изображение подвергается предварительному визуальному анализу Искусственной Нейронной Сетью (ИНС). В результате такого анализа устанавливаются положения заголовков, штрих-кодов, печатей и подписей, а также некоторых других типичных элементов сканов документов, в частности, таблиц [1].
Т.к. ИНС работает с использованием GPU, детектирование положения таблиц не увеличивает затрат времени, и является ценным побочным эффектом предварительного анализа. Анализ таблиц – вычислительно сложный процесс и информация о положении таблиц на скане позволяет снизить вычислительные затраты. Достаточно анализировать области, где ИНС обнаружила таблицы.
Задача анализа таблиц заключается в полном восстановлении структуры таблицы, включая объединенные и разделенные ячейки как по строкам, так и по столбцам. Эта задача может выполняться стандартными алгоритмическими методами обработки изображений и их реализаций в OpenCV [2].

Границы ячеек и “виртуальная решетка”

Ключевой метод анализа – детектирование горизонталей и вертикалей методом вероятностного преобразования Хафа [2].
На практике, выделяемых однократным преобразованием Хафа линий недостаточно, многие из них теряются или выявляются частично. Для решения проблемы применяется итерационный подход. После однократного применения преобразования все найденные линии удаляются из оригинального изображения и выполняется следующая итерация. Поиск заканчивается, когда очередной поиск не дал результата.
При этом оказывается, что одной реальной линии могут соответствовать до 10 найденных линий. Это происходит из-за толщины, и потерь вероятностного преобразования Хафа. Для дальнейшей последующей обработки выполняется слияние близких линий.
Затем отбираются линии образующие связный граф.
На основании набора связных линий строится “виртуальная решетка” таблицы. Виртуальная решетка состоит из всех вертикалей и горизонталей, продолженных до внешних границ таблицы. Все фактические вершины (углы ячеек) лежат на пересечении линий виртуальной решетки, так как не смотря на объединение и разделение ячеек, они остаются прямоугольниками.
Полная схема анализа таблиц приведена на рис. 1.
Рис. 1. Схема разбора таблиц в «ЭКО-ДОК OCR».

Вертексы

Как показала практика, важную роль в восстановлении структуры таблиц играет анализ вертексов – пересечение вертикалей и горизонталей “виртуальной решетки”.
Рис. 2. Допустимые вертексы.

На рис 2. представлены все возможные варианты допустимых вертексов. Кроме реальных пересечений вертекс может быть пустым (пересечение реальных линий отсутствует – случай m) или ошибочным (реальная линия обрывается).

Тип вертекса кодируется целым числом (профилем).

Шаг 6 (см. рис. 1) – “Уточнение и построение профиля вертексов” заключается в корректировке положения каждого вертекса на основании бинарного изображения. Уточнение – просто вычисление сдвига по вертикали и горизонтали для каждого вертекса.

Анализ вертексов заключается в подтверждении допустимых вариантов вертексов. Например, если вертекс на вертикали отвечает профилю k, то вертексы правее могут быть только типа: m, f или j. Если ограничение не выполняется, то производится дополнительный анализ и корректировка типов противоречивых вертексов. Такой анализ, согласно benchmark (см. таблицу 1), позволяет устранить до 50% дефектов разбора таблиц.

Результаты benchmarking’а

Результаты сравнения представленного метода и его реализации с известным пакетом img2table [3] на целевом наборе из 174 страниц приведены в табл. 1. По большинству показателей представленный метод превосходит img2table.

Таблица 1. Сравнение результативности алгоритмов анализа таблиц LogStream и Img2Table.

Показатель Представленный метод (Logstream) Img2table
Общее количество страниц 174
Общее количество таблиц 175
Количество ложных таблиц 0 11
Количество потерянных таблиц 0 35
Количество правильных 161 65*
Количество ошибочных таблиц 14 99
Время в секундах 380** 265
Примечание * Результат не точный, т.к. сравнение проводилось визуально. Формализованное сравнение затруднено разным подходом к таблицам. В Logstream таблицы прямоугольные и дополняются в случае необходимости пустыми ячейками. В img2table возможны таблицы с прилегающими ячейками. Учитывались только очевидные ошибки.
Примечание ** Код Logstream не подвергался окончательной оптимизации. Алгоритмы все еще улучшаются.

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

Источники

  1. Бутенко, Е.А., Задорожный, А.М., Любовинкина, Н.Я. и Потемкина, С.В. 2023. Система искусственного интеллекта для классификации документов сложной структуры. Системный анализ в науке и образовании. 1 (май 2023), 7–12.
  2. Документация по OpenCV. https://docs.opencv.org/4.x/;

    Преобразование Хафа. https://docs.opencv.org/3.4/d9/db0/tutorial_hough_lines.html

  3. Пакет python для детектирования и анализа таблиц. img2table · PyPI]
Подписывайтесь на наши каналы в Telegram и Вконтакте