Я пытаюсь извлечь текст из PDF-файлов, а затем попытаться определить ссылки. Я использую pdfminer 20140328. С незашифрованными файлами он работает хорошо, но теперь у меня есть файл, где я получаю:
Файл "C: \ Tools \ Python27 \ lib \ site-packages \ pdfminer \ pdfdocument.py", строка 348, в _initialize_password
повысить PDFEncryptionError ('Неизвестный алгоритм: param =% r'% param)
pdfminer.pdfdocument.PDFEncryptionError: Неизвестный алгоритм: param = {'CF': {'StdCF': {'Length': 16, 'CFM': / AESV2, 'AuthEvent': / DocOpen}}, 'O': '} \ xe2> \ xf1 \ xf6 \ xc6 \ x8f \ xab \ x1f "O \ x9bfc \ xcd \ x15 \ xe09 ~ 2 \ xc9 \\ x87 \ x03 \ xaf \ x17f> \ x13 \ t ^ K \ x99 ',' Фильтр ': / Стандартный,' P ': -1548,' Длина ': 128,' R ': 4,' U ':' Kk> \ x14 \ xf7 \ xac \ xe6 \ x97 \ xb35 \ xaby! \ X04 | \ x18 (\ xbfN ^ Nu \ x8aAd \ x00NV \ xff \ xfa \ x01 \ x08 ',' V ': 4,' StmF ': / StdCF,' StrF ': / StdCF}
Я проверил с pdfinfo, что этот файл, кажется, зашифрован AES, но я могу открыть его без каких-либо проблем. Итак, у меня есть два вопроса:
сначала: как возможно, что документ зашифрован, но я могу открыть его без пароля?
и во-вторых: как мне заставить PDFMiner правильно прочитать этот файл? Где-то я читал, чтобы установить pycrypto, чтобы получить дополнительные алгоритмы, но это не решило мою проблему.
Большое спасибо.
3 ответа
У меня была такая же проблема с некоторыми документами. Похоже, что документ зашифрован, но пароль пуст. Вот почему мы можем легко открыть его без пароля.
Я решил проблему с помощью утилиты Ubuntu qpdf . Он может расшифровать файл, если вы предоставите пароль (пустым в моем случае). Я реализовал команду оболочки в скрипте Python, которая расшифровывает документ с пустым паролем:
from subprocess import call
call('qpdf --password=%s --decrypt %s %s' %('', pdf_filename, pdf_filename_decr), shell=True)
Где
`pdf_filename` - filename of encrypted pdf,
`pdf_filename_decr` - filename of a new decrypted copy.
pdfminer теперь должен извлечь текст.
Я получил точно такую же ошибку, зашифрованный PDF с опцией шифрования -V 4. Оказывается, это на самом деле поддерживается в последней версии pdfminer.
Если вы использовали pip для установки pdfminer, вы запускаете выпуск 2014 года (20140328), который не поддерживает его. Так что вместо этого:
git clone https://github.com/euske/pdfminer.git
cd pdfminer
python setup.py install
Убедитесь, что у вас установлен pycrypto:
pip install pycrypto
И что вы можете импортировать AES:
from Crypto.Cipher import AES
Есть Windows PDF программа PDFill (www.pdfill.com). Я использовал бесплатную версию программы, чтобы сделать то же самое - просто «разделить» все страницы документа и сохранить результат. Сохраненный файл может быть прочитан pdfminer.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.