Извлечение текста PDF на основе правил для достоверных счетов и накладных

Мне нужно извлечь текст из PDF-файлов счетов и счетов

Макеты файлов могут быть сложными, хотя в основном они заполнены таблицами.

Я уже прочитал несколько десятков статей о формате pdf, о том, как легко нашему мозгу понять его и как сложно машине понять его структуру.

Также загружено несколько инструментов, таких как pdfminer python и некоторые инструменты Java, некоторые даже имеют извлечение макета на основе правил, например LA -PDBtext - это все отличные библиотеки, оставив вам последний шаг.

У Adobe также есть онлайн-сервис под названием exportPdf, но его нельзя настроить

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

Я также нашел From Data Extractor, платный инструмент с возможность устанавливать правила извлечения, которые утверждают, что выполняют эту работу, хотя трудно найти подходящее руководство, и оно работает только в Windows.

Я подумал, что могу даже попытаться преобразовать эти файлы в изображения и попробовать tesseract-ocr, но решил попросите совета здесь, прежде чем я потрачу на это больше времени.

Буду очень признателен, если кто-нибудь с таким опытом подскажет.


person Guy Gavriely    schedule 17.04.2012    source источник
comment
Если эти PDF-файлы не соответствуют PDF / A-1a, вам придется много работать - вам в основном придется выполнять OCR. PDF не подходит для этого; попробуйте вместо этого получать счета-фактуры и счета в виде правильно структурированного XML или EDIFACT.   -  person Martin Schröder    schedule 17.04.2012
comment
Привет, я знаю, что это старый пост, но попробуйте Tabula github.com/jazzido/tabula-extractor   -  person blaze    schedule 23.11.2013


Ответы (2)


Я много раз извлекал PDF-файлы и могу подтвердить, поскольку вы уже обнаружили, что начало этого процесса может быть болезненным. Одна из важных вещей, которую следует понять, заключается в том, что в PDF-документе нет понятия «таблицы», а есть только текст, вокруг которого есть линии. Кроме того, нет гарантии, что линейный порядок текста в коде PDF действительно соответствует визуальному порядку при печати. Другими словами, нет никакой гарантии, что «hello world» написано в таком порядке, это может быть draw 'word' at coord 20 then draw 'hello' at coord 10. Большинство создателей PDF этого не делают, но все равно нет никакой гарантии. Чем более креативен создатель PDF (InDesign, Illustrator и т. Д.), Тем больше вероятность того, что текст будет труднее извлечь. И на самом деле, как только дизайнер начинает слишком много возиться со шрифтами, некоторые программы иногда фактически выводят слова по одному символу за раз, слегка изменяя шрифт каждый раз.

Тем не менее, я бы порекомендовал первый, на который вы посмотрели, LA-PDFText. Вы можете запустить его в режиме обнаружения (блокировать), в котором вы можете создавать правила. . У меня больше не установлена ​​Java, поэтому я не могу ее протестировать, но это кажется очень многообещающим.

Ваш второй, A-PDF Form Data Extractor, действительно работает только с настоящими PDF-формами. Если это ваш случай, я бы рекомендовал просто использовать решение с открытым исходным кодом, например iText / iTextSharp.

Последний OCR заставляет меня съеживаться. Я просто не могу представить, что, пройдя через эти обручи, вы сможете лучше представить текст, чем парсинг PDF. Но опять же, PDF - это визуальный формат, поэтому, возможно, так и будет.

Лично я использую iText / iTextSharp для такого рода вещей, но Я также люблю поступать жестко.

person Chris Haas    schedule 17.04.2012

Непонятно, ищете ли вы инструмент разработки для автоматизации извлечения данных из счетов и счетов-фактур или только одноразовый инструмент (утилиту), который может использовать не разработчик?

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

  1. Tabula (с открытым исходным кодом, специально разработанная для извлечения данных из таблиц в PDF. Может экспортировать сценарии оболочки для пакетной обработки, запускается как веб-сервис localhost, работающий на движке Tabula JRuby)
  2. Viet OCR (настольная утилита .NET с открытым исходным кодом для извлечения текста из PDF и изображений на основе tesseract oct engine)
  3. Bytescout PDF Viewer (бесплатная утилита .NET с закрытым исходным кодом, обнаруживает и извлекает таблицы, в том числе отсканированные счета на основе PDF Extractor SDK)

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю в ByteScout.

person Eugene    schedule 02.03.2015