Как обрабатывать / декодировать значения PDF-форм, извлеченные с помощью pdfminer? - PullRequest
0 голосов
/ 11 сентября 2018

Я извлекаю пары имен и значений из некоторых PDF-форм, используя этот код:

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import resolve1

fp = open(filename, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
fields = resolve1(doc.catalog['AcroForm'])['Fields']
for i in fields:
    field = resolve1(i)
    name, value = field.get('T'), field.get('V')

Моя проблема в том, что извлекаемые мной значения выглядят так:

b'idea'
b'_cv1'
b'08'
b'\xfe\xff\x002\x000\x001\x008\x000'
b'\x80 bla bla blah bli bloh.\r\x80 Ensure the water is clear'
b"032r01u0\xec4t'341"

/'_s1'
/'no'
/'medium'

/b'S\xec'

Это PSLiterals или байты (из pdfminer).Я понятия не имею, как обращаться с PSLiterals, и байты имеют различный вид, поскольку форму можно скомпилировать как в Windows / Macos, так и в других языках.

Я хотел бы преобразовать их в строку в чистом иавтоматическим способом, но сейчас я застреваю с ошибками .decode ('utf8') или .decode ('latin-1').Имена (ключи) не являются проблемой, они прекрасно декодируются (как utf-8).

Сейчас я конвертирую все в строку и использую подстановку позже, но это не идеальное решение.

Может кто-нибудь указать мне правильное направление?Спасибо.

...