Как извлечь текст из PDF?

Может ли кто-нибудь рекомендовать библиотеку /API для извлечения текста и изображений из PDF? Нам нужно иметь возможность получить текст, который содержится в заранее известных областях документа, поэтому API должен будет предоставить нам позиционную информацию каждого элемента на странице.

Мы хотели бы, чтобы эти данные выводились в формате xml или json. В настоящее время мы смотрим на PdfTextStream, который кажется довольно хорошим, но хотелось бы услышать опыт и предложения других людей.

Существуют ли альтернативы (коммерческие или бесплатные) для извлечения текста из pdf программно?

Ответ 1

Мне был предоставлен 400-страничный pdf файл с таблицей данных, которую мне пришлось импортировать - к счастью, никаких изображений. Ghostscript работал у меня:

gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

Выходной файл был разделен на страницы с заголовками и т.д., но затем было легко написать приложение, чтобы вырезать пустые строки и т.д., и сосать все 30 000 записей. -dSIMPLE и -dCOMPLEX не имели никакого значения в этом случае.

Ответ 2

С сегодняшнего дня я это знаю: лучшая вещь для извлечения текста из PDF файлов TET, инструмент для извлечения текста. TET является частью семейства продуктов PDFlib.com.

PDFlib.com - компания Томаса Мерца. Если вы не узнаете его имя: Томас Мерц является автором "Библии PostScript и PDF".

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

pdflib.com также предлагает другое воплощение этой технологии, плагин TET для Acrobat. Третьим воплощением является PDFlib TET iFilter. Это автономный инструмент для пользовательских настольных компьютеров. Оба они бесплатны (как в пиве) для использования в частных некоммерческих целях.

И это действительно мощно. Лучше, чем собственное извлечение текста Adobe. Он извлек текст для меня, где другие инструменты (в том числе Adobe) действительно выплевывают только мусор.

Я просто протестировал автономный инструмент для настольных компьютеров, и то, что они говорят на своей веб-странице, верно. У него очень хорошая командная строка. Некоторые из моих "проблемных" файлов PDF файлов обрабатывают инструмент в полном объеме.

Теперь эта вещь будет моей рекомендацией для каждого сложного и сложного требования к извлечению текста в формате PDF.

TET просто потрясающе. Он обнаруживает таблицы. Внутри таблиц он идентифицирует ячейки, охватывающие несколько столбцов. Он определяет таблицы и содержимое каждой ячейки таблицы отдельно. Он отлично справляется с переносами: он удаляет дефисы и восстанавливает полные слова. Он поддерживает языки, отличные от ASCII (включая CJK, арабский и иврит). При встрече с лигатурами восстанавливаются исходные символы...

Попробуйте.

Ответ 4

Эффективный инструмент командной строки, с открытым исходным кодом, без какой-либо платы, доступный как для Linux, так и для Windows: просто называется pdftotext. Этот инструмент является частью библиотеки xpdf.

http://en.wikipedia.org/wiki/Pdftotext

Ответ 5

Вот мое предложение. Если вы хотите извлечь текст из PDF, вы можете импортировать файл PDF в Документы Google, а затем экспортировать его в более дружественный формат, такой как .html,.odf,.rtf,.txt и т.д. Все это с использованием API Drive, Он бесплатный * и надежный. Взгляните на:

https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get

Поскольку это API для отдыха, он совместим со всеми программирующими языками. Ссылки, которые я написал выше, имеют рабочие примеры для многих языков, включая: Java,.NET, Python, PHP, Ruby и др.

Надеюсь, это поможет.

Ответ 6

PdfTextStream (о котором вы говорили, что вы смотрите) теперь бесплатно для однопоточных приложений. По моему мнению, его качество намного лучше, чем другие библиотеки (особенно для фанковых встроенных шрифтов и т.д.).

Кроме того, вы должны взглянуть на Apache PDFBox с открытым исходным кодом.

Ответ 7

Библиотека Docotic.Pdf может использоваться для извлечения текста из файлов PDF в виде простого текста или в виде набора текстовых фрагментов с координатами для каждого фрагмента.

Docotic.Pdf также может быть использован для извлечения изображений из PDF файлов.

Отказ от ответственности: я работаю на Bit Miracle.

Ответ 8

Один из комментариев здесь используется gs для Windows. У меня был некоторый успех в Linux и OSX, со следующим синтаксисом:

gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

Я использовал dSIMPLE вместо dCOMPLEX, потому что последний выводит 1 символ в строке.

Ответ 9

Поскольку речь идет конкретно об альтернативных инструментах для получения данных из PDF в виде XML, вам может быть интересно взглянуть на коммерческий инструмент "ByteScout PDF Extractor SDK", который способен сделать именно это: извлекать текст из PDF в виде XML вместе с данные позиционирования (x, y) и информация о шрифте:

Текст в исходном PDF:

Products | Units | Price 

Выходной XML:

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>

PS: дополнительно он также разбивает текст на структуру таблицы.

Раскрытие информации: я работаю на ByteScout

Ответ 10

Самое лучшее, что я могу сейчас подумать (в списке "простых" инструментов) Ghostscript (текущая версия v.8.71) и служебную программу PostScript ps2ascii.ps. Ghostscript отправляет его в свой подкаталог lib. Попробуйте это (в Windows):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

Эта команда обрабатывает страницы 3-7 из input.pdf. Прочитайте комментарии в файле ps2ascii.ps, чтобы увидеть, что означают "странные" числа и дополнительная информация (они указывают строки, позиции, ширину, цвета, изображения, прямоугольники, шрифты и разрывы страниц...). Чтобы получить "простой" текст, замените -dCOMPLEX на -dSIMPLE.

Ответ 13

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

http://www.quickpdflibrary.com/ - У них 30-дневная пробная версия.

Ответ 14

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

https://gist.github.com/smalot/6183152

В некоторых случаях командная строка запрещена по соображениям безопасности. Таким образом, собственный PHP-класс может удовлетворить многие потребности.

Надеюсь, что это поможет Everone

Ответ 15

В моих системах Macintosh я обнаружил, что "Adobe Reader" делает достаточно хорошую работу. Я создал псевдоним на своем Рабочем столе, который указывает на "Adobe Reader.app", и все, что я делаю, - это удалить pdf файл в псевдониме, что делает его активным документом в Adobe Reader, а затем из меню "Файл", Я выбираю "Сохранить как текст...", дайте ему имя и где его сохранить, нажмите "Сохранить", и я закончил.