Как извлечь таблицы из исторического PDF? - PullRequest
0 голосов
/ 23 февраля 2019

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

Я пробовал:

  • Обнаружение таблицы ABBYY Finereader.
  • Извлечение таблицы Tabula
  • Извлечение таблицы Camelot
  • Пользовательский питон Код

Проблема: Рекламные инструменты очень плохи с обнаружением краев стола.Таблицы следуют схожему общему формату, но каждое сканирование выравнивается немного по-разному, поэтому жесткое кодирование границ также не будет работать.

Вопрос: Ребята, знаете ли вы хороший способ определить, где начинается таблица, а затем применить один из нескольких шаблонов?

Любые другие советы для такого рода работыс благодарностью.

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Вместо параметра Camelot table_areas (который задает фиксированные границы) вы можете попытаться использовать параметр table_regions, чтобы указать регионы, в которых, вероятно, находятся таблицы (Camelot будет анализировать только указанные регионы для поиска таблиц).

https://camelot -py.readthedocs.io / ru / master / user / advanced.html # указать таблицы регионов

Пожалуйста, держите нас в курсе.

0 голосов
/ 27 февраля 2019

ОБНОВЛЕНИЕ 2/26: Я решил свой вопрос, хотя не стесняюсь отвечать быстрыми или лучшими решениями.

Одна из основных проблем заключается в том, что таблицы примерно одинаковы по размерам, но они различаются от страницы к странице.Отсканированные изображения также слегка смещены от страницы к странице, что создает две проблемы с выравниванием .Мой текущий рабочий процесс решает и то, и другое:

Выравнивание типа таблицы

Решение:

  1. Используйте инструменты редактирования изображений в ABBYY длявырезать каждую страницу по горизонтали.Это дает одну таблицу на каждой странице.
  2. Обратите внимание, что существует 4 типа таблиц.Четные страницы и нечетные страницы имеют отдельные макеты.Первая таблица на каждой странице содержит поле для даты.
  3. Это дает четность первой таблицы, нечетную первую таблицу, четную reg-table, нечетную reg-table.Обработка по одному типу за раз с фиксированными областями таблицы и столбцами устраняет смещение из-за различий в разметке таблиц.

Выравнивание изображения

Изображения одного типа таблицы по-прежнему не выровненыпоэтому указание макета таблицы в координатах (x, y) не сработает.Расположение таблиц на каждом изображении различается.

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

Iрешил проблему интересным способом, но сначала я попытался выполнить следующие шаги:

  1. Обнаружение вертикальных линий с помощью Opencv.Результат: плохо обнаружил слабые линии.Часто пропускает линии, что делает его бесполезным для выравнивания.
  2. Используйте Scan Tailor для обнаружения содержимого.Результат: алгоритм обнаружения может обрезать некоторые таблицы в одних файлах, а в других включать пробелы из-за пятен на изображении.Удаление пятен не помогло.
  3. Используйте Камелот с широкими областями таблицы, без значений столбцов.Результат: Это, вероятно, будет работать хорошо в других случаях, но Камелот упал здесь.Данные доводятся до центов, и между каждыми тремя цифрами есть пробелы.Это привело к неправильному расположению 00 в нескольких столбцах.

Решение:

После разрезания изображений на таблицы, описанные в разделе «Выравнивание типов таблиц», используйтеФункция автоматического выравнивания слоев в Photoshop для выравнивания изображений.

Пошаговое решение:

  1. Открытие Photoshop
  2. Загрузка изображений одного типа таблицы в одинфайл с помощью: File-Scripts-Load Files to Stack
  3. Использование: Edit-Auto-alignment layer
  4. Используйте инструмент кадрирования, чтобы каждый файл имел одинаковый размер.
  5. Экспорт каждогоизображение как собственный файл: File-Export-Layers в файлы
  6. Используйте редактор OCR ABBYY для каждого из 4 типов таблиц, жестко закодируйте столбцы и строки с помощью графического редактора.
  7. Экспорт в CSV изABBYY
  8. Используйте что-то вроде clean.py для удаления пробелов и плохих символов.

Готово!Объедините файлы для каждой таблицы, как вам нравится.Я опубликую свой код Python для этого, когда я закончу с проектом.После очистки я также опубликую данные.

0 голосов
/ 25 февраля 2019

Здесь есть бесплатный онлайн-инструмент https://www.pdftron.com/pdf-tools/pdf-table-extraction/

Соответствующий блог https://www.pdftron.com/blog/parsing-extraction/table-extraction-and-pdf-to-xml-with-pdfgenie/ содержит ссылки на инструмент командной строки PDFGenie

...