Я пытаюсь извлечь текст из 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, чтобы получить дополнительные алгоритмы, но это не решило мою проблему.

Большое спасибо.

9
RichieK 18 Дек 2015 в 17:19

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 теперь должен извлечь текст.

14
Prune 22 Фев 2016 в 18:41

Я получил точно такую же ошибку, зашифрованный 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
0
Emilia Apostolova 25 Июл 2018 в 18:47

Есть Windows PDF программа PDFill (www.pdfill.com). Я использовал бесплатную версию программы, чтобы сделать то же самое - просто «разделить» все страницы документа и сохранить результат. Сохраненный файл может быть прочитан pdfminer.

-3
Thomas Wicklund 1 Апр 2016 в 02:54