Есть ли модуль Python для преобразования PDF-файлов в текст? Я попробовал один фрагмент кода, найденный в Activestate, который использует pypdf, но в сгенерированном тексте не было пробела, и он был бесполезен.
385
Есть ли модуль Python для преобразования PDF-файлов в текст? Я попробовал один фрагмент кода, найденный в Activestate, который использует pypdf, но в сгенерированном тексте не было пробела, и он был бесполезен.
Ответы:
Попробуйте PDFMiner . Он может извлекать текст из файлов PDF в формате HTML, SGML или «Tagged PDF».
Формат PDF с тегами кажется самым чистым, а удаление тегов XML оставляет только пустой текст.
Версия Python 3 доступна в разделе:
источник
Пакет PDFMiner изменился с момента публикации Codeape .
РЕДАКТИРОВАТЬ (снова):
PDFMiner был снова обновлен в версии
20100213
Вы можете проверить установленную версию со следующим:
Вот обновленная версия (с комментариями о том, что я изменил / добавил):
Изменить (еще раз):
Вот обновление для последней версии в PyPI ,
20100619p1
. Короче я заменилLTTextItem
сLTChar
и передал экземпляр LAParams конструктору CsvConverter.РЕДАКТИРОВАТЬ (еще раз):
Обновлено для версии
20110515
(спасибо Oeufcoque Penteano!):источник
LTTextItem
наLTChar
. unixuser.org/~euske/python/pdfminer/index.html#changes20110515
за ваш комментарий.Поскольку ни одно из этих решений не поддерживает последнюю версию PDFMiner, я написал простое решение, которое будет возвращать текст PDF с использованием PDFMiner. Это будет работать для тех, кто получает ошибки импорта с
process_pdf
Ниже приведен код, который работает для Python 3:
источник
python3
, помимо очевидных скобок послеprint
команды, необходимо заменитьfile
команду наopen
и импортироватьStringIO
из пакетаio
Pdftotext Программа с открытым исходным кодом (часть Xpdf), которую вы можете вызывать из python (не то, что вы просили, но может быть полезно). Я использовал это без проблем. Я думаю, что Google использует его в Google Desktop.
источник
-layout
возможностью сохранить текст в том же положении, что и в PDF. Теперь, если бы я только мог понять, как передать содержимое PDF в него.pdftotext
кажется, работает очень хорошо, но ему нужен второй аргумент, который является дефисом, если вы хотите увидеть результаты на stdout.find . -iname "*.pdf" -exec pdftotext -enc UTF-8 -eol unix -raw {} \;
по умолчанию сгенерированные файлы имеют исходное имя с.txt
расширением.pyPDF работает нормально (при условии, что вы работаете с правильно сформированными PDF-файлами). Если вам нужен только текст (с пробелами), вы можете просто сделать:
Вы также можете легко получить доступ к метаданным, данным изображения и так далее.
Комментарий в примечаниях к коду extractText:
Является ли это проблемой, зависит от того, что вы делаете с текстом (например, если порядок не имеет значения, это нормально, или если генератор добавляет текст в поток в порядке, в котором он будет отображаться, это нормально) , У меня есть код извлечения pyPdf в повседневном использовании, без каких-либо проблем.
источник
Вы также можете довольно легко использовать pdfminer в качестве библиотеки. У вас есть доступ к модели содержимого PDF, и вы можете создать свой собственный текст извлечения. Я сделал это, чтобы преобразовать содержимое PDF в текст, разделенный точкой с запятой, используя код ниже.
Функция просто сортирует объекты содержимого TextItem в соответствии с их координатами y и x и выводит элементы с той же координатой y, что и в одной текстовой строке, разделяя объекты на одной строке с помощью ';' персонажи.
Используя этот подход, я смог извлечь текст из PDF-файла, из которого другой инструмент не смог извлечь контент, пригодный для дальнейшего анализа. Другие инструменты, которые я пробовал, включают pdftotext, ps2ascii и онлайн-инструмент pdftextonline.com.
pdfminer - это бесценный инструмент для pdf-соскоба.
ОБНОВЛЕНИЕ :
Код выше написан на старой версии API, см. Мой комментарий ниже.
источник
pdfminer
, нетpdflib
). Я предлагаю вам взглянуть на источникpdf2txt.py
в источнике PDFminer, приведенный выше код был вдохновлен старой версией этого файла.slate
это проект, который позволяет очень просто использовать PDFMiner из библиотеки:источник
Мне нужно было конвертировать определенный PDF в обычный текст в модуле Python. Я использовал PDFMiner 20110515, прочитав их инструмент pdf2txt.py , я написал этот простой фрагмент:
источник
C:\Python27\Scripts\pdfminer\tools\pdf2txt.py
Повторное использование кода pdf2txt.py, который поставляется с pdfminer; вы можете создать функцию, которая будет указывать путь к PDF; опционально, outtype (txt | html | xml | tag) и выбирает как командную строку pdf2txt {'-o': '/path/to/outfile.txt' ...}. По умолчанию вы можете позвонить:
Будет создан текстовый файл, родной файл в файловой системе с оригинальным pdf.
источник
PDFminer дал мне, возможно, одну строку [страница 1 из 7 ...] на каждой странице файла PDF, который я пробовал с ним.
Лучший ответ, который у меня есть, это pdftoipe или код на c ++, основанный на Xpdf.
см. мой вопрос о том, как выглядит вывод pdftoipe.
источник
Кроме того, существует PDFTextStream - коммерческая библиотека Java, которую также можно использовать из Python.
источник
Я использовал
pdftohtml
с-xml
аргументом, прочитайте результат сsubprocess.Popen()
, который даст вам координаты x, координаты y, ширину, высоту и шрифт каждого фрагмента текста в pdf. Я думаю, что это, вероятно, тоже «evince», потому что выдают те же сообщения об ошибках.Если вам нужно обрабатывать столбчатые данные, это становится немного сложнее, так как вам нужно изобрести алгоритм, который подходит для вашего файла PDF. Проблема в том, что программы, которые создают файлы PDF, не обязательно выкладывают текст в каком-либо логическом формате. Вы можете попробовать простые алгоритмы сортировки, и иногда это работает, но могут быть небольшие «отставшие» и «заблудившиеся» фрагменты текста, которые не помещаются в том порядке, в котором вы думали. Таким образом, вы должны стать творческими.
У меня ушло около 5 часов, чтобы найти один из тех PDF-файлов, над которыми я работал. Но это работает довольно хорошо сейчас. Удачи.
источник
Нашел это решение сегодня. Прекрасно работает для меня. Даже рендеринг страниц PDF в изображения PNG. http://www.swftools.org/gfx_tutorial.html
источник