Python для чтения pdf файлов

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

Ответ 1

Возможно, самый быстрый способ сделать это - сначала преобразовать ваш pdf файл в текстовый файл, используя pdftotext (на сайте pdfMiner есть утверждение, что файл pdfMiner в 20 раз медленнее, чем pdftotext), а затем разбор текстового файла как обычно.

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

Ответ 2

Я использую pdfminer, и это отличная библиотека, особенно если вам удобно программировать на python. Он читает PDF и извлекает каждый символ, и он предоставляет свой ограничивающий прямоугольник как кортеж (x0, y0, x1, y1). Pdfminer будет извлекать прямоугольники, линии и некоторые изображения и будет пытаться обнаружить слова. У него есть неприятная процедура O (N ^ 3), которая анализирует ограничивающие поля для их объединения, поэтому в некоторых файлах она может замедляться. Попробуйте преобразовать ваш типичный файл - возможно, это будет быстро для вас, или, может быть, потребуется 1 час, зависит от файла.

Вы можете легко выгружать pdf файл в виде текста, что первое, что вы должны попробовать для своего приложения. Вы также можете сбрасывать XML (см. Ниже), но вы не можете изменять PDF. XML - это наиболее полное представление PDF, которое вы можете получить из него.

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

Пример, который поставляется с PdfMiner, который преобразует PDF в xml, показывает, как использовать lib в вашем коде. Он также показывает вам то, что извлечено в форме, читаемой человеком (насколько это касается xml).

Вы можете вызвать его с параметрами, которые говорят ему "анализировать" pdf. Если вы это сделаете, он объединит буквы в блоки текста (слова и предложения, предложения будут содержать пробелы, поэтому их легко подделать на слова в python).

Ответ 3

В то время как мне действительно понравился ответ pdfminer, я бы сказал, что с течением времени пакеты не совпадают. Currenlty pdfminer по-прежнему не поддерживает Python3 и может нуждаться в обновлении. Итак, чтобы обновить тему - даже если ответ уже был проголосован - я бы предложил pdfrw с веб-сайта:

  • Версия 0.3 проверена и работает на Python 2.6, 2.7, 3.3, 3.4 и 3.5 Операции включают подмножество, слияние, вращение, изменение метаданных и т.д.
    • Доступен самый быстрый чип-анализатор Python PDF. Много лет использовался принтером в пре-прессе.
    • Может использоваться с rst2pdf для точного воспроизведения векторных изображений
    • Может использоваться как автономно, так и совместно с reportlab для повторного использования существующих PDF файлов в новых
    • Допустимо лицензированная