Кто-нибудь может порекомендовать библиотеку / API для извлечения текста и изображений из PDF? Нам нужно иметь возможность получить доступ к тексту, который содержится в заранее известных областях документа, поэтому API должен будет предоставить нам информацию о местоположении каждого элемента на странице.
Мы хотели бы, чтобы эти данные были выведены в xml
или json
отформатированы. В настоящее время мы смотрим на PdfTextStream который кажется довольно хорошим, но хотел бы услышать опыт и предложения других людей.
Существуют ли альтернативы (коммерческие или бесплатные) для извлечения текста из pdf программно?
pdf
text
ghostscript
extraction
text-extraction
Budda007
источник
источник
/^\s*\[?\((.*?)\)\]?\s*T[Jj]/mg
. Он просто ищет оператор Tj / TJ, который обозначает весь обычный текст в PDF.Ответы:
Мне дали 400-страничный PDF-файл с таблицей данных, которые мне пришлось импортировать - к счастью, никаких изображений. Ghostscript работал на меня:
gswin64c -sDEVICE=txtwrite -o output.txt input.pdf
Выходной файл был разбит на страницы с заголовками и т. Д., Но тогда было легко написать приложение для удаления пустых строк и т. Д. И впитать все 30 000 записей.
-dSIMPLE
и-dCOMPLEX
не имеет никакого значения в этом случае.источник
gs
вместоgswin64c
. Работает отлично. Нет запатентованного платного дерьма. Это просто работает.-sDEVICE=txtwrite
? Я не очень понимаю после прочтения Как использовать Ghostscript | Выбор устройства выводаgswin64c -sDEVICE=txtwrite -o- input.pdf
. Источник (слегка измененный мной): gist.github.com/drmohundro/560d72ed06baaf16f191ee8be34526acС сегодняшнего дня я знаю это: лучшая вещь для извлечения текста из PDF-файлов - это TET, набор инструментов для извлечения текста. . TET является частью семейства продуктов PDFlib.com.
PDFlib.com - компания Томаса Мерца. В случае, если вы не узнаете его имя: Томас Мерц является автором «Библии PostScript и PDF».
Первое воплощение TET - это библиотека . Это, вероятно, может сделать все, что хотел Budda006, включая информацию о местоположении каждого элемента на странице. Да, и он также может извлекать изображения. Он объединяет изображения, которые фрагментированы на куски.
pdflib.com также предлагает еще одно воплощение этой технологии, плагин TET для Acrobat . И третье воплощение - это PDFlib TET iFilter . Это автономный инструмент для рабочих столов пользователей. Оба они бесплатны (как в пиве) для использования в личных некоммерческих целях.
И это действительно мощно. Это лучше, чем собственное извлечение текста Adobe. Он извлек текст для меня, где другие инструменты (в том числе Adobe) выплескивают только мусор.
Я только что протестировал автономный инструмент для настольных компьютеров, и то, что они говорят на своей веб-странице, правда. У него очень хорошая командная строка. Некоторые из моих «проблемных» тестовых файлов PDF с инструментом обработаны к моему полному удовлетворению.
Эта вещь будет теперь моей рекомендацией для всех сложных и сложных требований к извлечению текста в PDF.
ТЕТ просто потрясающе. Он обнаруживает таблицы. Внутри таблиц он идентифицирует ячейки, охватывающие несколько столбцов. Он определяет строки таблицы и содержимое каждой ячейки таблицы отдельно. Он очень хорошо справляется с переносами слов: он удаляет дефисы и восстанавливает полные слова. Он поддерживает не-ASCII языки (включая CJK, арабский и иврит). При встрече с лигатурами восстанавливаются оригинальные символы ...
Попробуйте.
источник
Эффективный инструмент командной строки с открытым исходным кодом, бесплатный и доступный как в Linux, так и в Windows: просто с именем pdftotext. Этот инструмент является частью библиотеки xpdf.
http://en.wikipedia.org/wiki/Pdftotext
источник
-layout
переключатель, чтобы сохранить таблицы, работает довольно хорошо.Для python есть PDFMiner и pyPDF2 . Для получения дополнительной информации см. Модуль Python для преобразования PDF в текст .
источник
Вот мое предложение. Если вы хотите извлечь текст из PDF, вы можете импортировать файл PDF в Google Docs, а затем экспортировать его в более удобный формат, например .html, .odf, .rtf, .txt и т. Д. Все это с помощью Drive API , Это бесплатно * и надежно. Взгляни на:
https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get
Поскольку это API отдыха, он совместим со ВСЕМИ языками программирования. Ссылки, которые я разместил выше, имеют рабочие примеры для многих языков, включая: Java, .NET, Python, PHP, Ruby и другие.
Я надеюсь, что это помогает.
источник
PdfTextStream (который, как вы сказали, просматривали) теперь бесплатен для однопоточных приложений. На мой взгляд, его качество намного лучше, чем у других библиотек (особенно для таких вещей, как встроенные шрифты в стиле фанк и т. Д.).
Кроме того, вы должны взглянуть на Apache PDFBox с открытым исходным кодом.
источник
Библиотека Docotic.Pdf может быть использована для извлечения текста из PDF файлов виде простого текста или в виде набора текстовых фрагментов с координатами для каждого фрагмента.
Docotic.Pdf также может быть использован для извлечения изображений из PDF-файлов .
Отказ от ответственности: я работаю на Bit Miracle.
источник
Один из комментариев здесь использовал gs на Windows. У меня также был некоторый успех в Linux / OSX со следующим синтаксисом:
Я использовал
dSIMPLE
вместо того,dCOMPLEX
потому что последний выводит 1 символ в строке.источник
Поскольку речь идет конкретно об альтернативных инструментах для получения данных из PDF в формате XML, вам может быть интересно взглянуть на коммерческий инструмент "ByteScout PDF Extractor SDK" который способен именно на это: извлекать текст из PDF в формате XML вместе с данные позиционирования (x, y) и информация о шрифте:
Текст в исходном PDF:
Выходной XML:
PS: дополнительно он также разбивает текст на структуру таблицы.
Раскрытие информации: я работаю на ByteScout
источник
Лучшее, что я могу сейчас себе представить (из списка «простых» инструментов) - это Ghostscript (текущая версия v.8.71) и служебная программа PostScript
ps2ascii.ps
. Ghostscript отправляет его в своемlib
подкаталоге. Попробуйте это (в Windows):Эта команда обрабатывает страницы 3-7 из
input.pdf
. Прочитайте комментарии в самомps2ascii.ps
файле, чтобы увидеть, что означают «странные» цифры и дополнительная информация ( они указывают строки, позиции, ширину, цвета, картинки, прямоугольники, шрифты и разрывы страниц ... ). Чтобы получить «простой» вывод текста, замените-dCOMPLEX
деталь на-dSIMPLE
.источник
ps2ascii book.pdf notes.txt
. Если ваш документ преимущественно ASCII, вам повезло.Я знаю, что эта тема довольно старая, но эта потребность еще жива. Я прочитал много документов, форумов и сценариев и создаю новый расширенный, который поддерживает сжатый и несжатый PDF:
https://gist.github.com/smalot/6183152
В некоторых случаях командная строка запрещена по соображениям безопасности. Таким образом, нативный класс PHP может удовлетворить многие потребности.
Надеюсь, это поможет
источник
Для извлечения изображений pdfimages - это бесплатный инструмент командной строки для Linux или Windows (win32):
pdfimages: извлечение и сохранение изображений из файла в формате PDF.
источник
Apache pdfbox имеет эту функцию - текстовая часть описана в:
http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html
пример реализации см. https://github.com/WolfgangFahl/pdfindexer.
testPdfIndexer.testExtracting показывает, как это работает
источник
QuickPDF кажется разумной библиотекой, которая должна делать то, что вы хотите, за разумную цену.
http://www.quickpdflibrary.com/ - У них есть 30-дневная пробная версия.
источник
В моих системах Macintosh я обнаружил, что «Adobe Reader» делает довольно хорошую работу. Я создал псевдоним на рабочем столе, который указывает на «Adobe Reader.app», и все, что я делаю, - это перетаскиваю pdf-файл на псевдоним, который делает его активным документом в Adobe Reader, а затем из меню «Файл», Я выбираю «Сохранить как текст ...», даю ему имя и место для сохранения, нажимаю «Сохранить», и все готово.
источник