Как извлечь текст из 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, арабский и иврит). При встрече с лигатурами восстанавливаются исходные символы...
Попробуйте.
Ответ 3
Для python существует PDFMiner и pyPDF2. Для получения дополнительной информации см. модуль Python для преобразования PDF в текст.
Ответ 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
.
Ответ 11
Для извлечения изображений pdfimages - это бесплатный инструмент командной строки для Linux или Windows (win32):
pdfimages: Извлечение и сохранение изображений из файла формата PDF (PDF)
Ответ 12
В Apache pdfbox есть эта функция - текстовая часть описана в:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
для примера реализации см.
https://github.com/WolfgangFahl/pdfindexer
тестовый файл TestPdfIndexer.testExtracting показывает, как он работает
Ответ 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, а затем из меню "Файл", Я выбираю "Сохранить как текст...", дайте ему имя и где его сохранить, нажмите "Сохранить", и я закончил.