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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Попробуйте.

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

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

Для python есть PDFMiner и pyPDF2 . Для получения дополнительной информации об этом см. Модуль Python для преобразования PDF в текст .

Вот мое предложение. Если вы хотите извлечь текст из 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 для restа, он совместим со всеми программирующими языками. В ссылках, которые я написал выше, есть рабочие примеры для многих языков, включая: Java, .NET, Python, PHP, Ruby и другие.

Я надеюсь, что это помогает.

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

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

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

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

Отказ от ответственности: я работаю на бит чудо.

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

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

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

Отказ от ответственности: я работаю для ByteScout

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

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

 Products | Units | Price 

Выходной XML:

    Products   Units   Price   

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

Для извлечения изображений pdfimages – это бесплатный инструмент командной строки для Linux или Windows (win32):

pdfimages: извлечение и сохранение изображений из файла формата PDF (PDF)

В Apache pdfbox есть эта функция – текстовая часть описана в:

http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html

для примера реализации см. https://github.com/WolfgangFahl/pdfindexer

тестовый тест TestPdfIndexer.testExtracting показывает, как он работает

Самое лучшее, что я могу сейчас подумать (в списке «простых» инструментов), 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 файле ps2ascii.ps , чтобы узнать, что означают «странные» цифры и дополнительная информация ( они указывают строки, позиции, ширину, цвета, изображения, прямоугольники, шрифты и разрывы страниц … ). Чтобы получить «простой» вывод текста, замените часть -dSIMPLE на -dSIMPLE .

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

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

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

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

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

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

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

Давайте будем гением компьютера.