如何处理/解码用pdfminer提取的pdf表单值?

时间:2018-09-11 20:04:26

标签: python python-3.x pdf pdfminer

我正在使用以下代码从某些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)。

现在,我将所有内容转换为字符串,并在以后使用替换,但这不是理想的解决方案。

有人可以指出我正确的方向吗?谢谢。

0 个答案:

没有答案