Python 3.7中的fitz.Document解码问题

问题描述

我想提取pdf文本并使用一些常规wxpression来过滤信息。 我正在使用fitz在Python 3.7.4中进行编码以解析pdf。 PDF是用德语编写的。我的代码如下:

doc = fitz.open(pdfpath)
pagecount = doc.pageCount
page = 0
content = ""

while (page < pagecount):
    p = doc.loadPage(page)
    page += 1
    content = content + p.getText()

打印内容时,我意识到文档的前半部分(也是重要的部分)被解码为日语(?)符号和其他符号的奇怪组合,如下所示:ョ。 オ ウ キ ・ ゥ エ オ ョ ァ @ ュ。 我尝试通过不同的解码方式(latin-1,'iso-8859-1')解决该问题,编码肯定是在utf-8中进行的。

content= content+p.getText().encode("utf-8").decode("utf-8")

有什么建议吗? 预先感谢!

编辑: 我也尝试过使用minecart获取文本:

import minecart

file = open(pdfpath,'rb')

document = minecart.Document(file)

for page in document.iter_pages():
    for lettering in page.letterings :
        print(lettering)

..这会导致相同的问题。

使用textract,前半部分是一个空字符串:

import textract

text = textract.process(pdfpath)
print(text.decode('utf-8'))

PyPDF2相同:

import PyPDF2

    
pdfFileObj = open(pdfpath,'rb')

pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
for index in range(0,pdfReader.numPages) :
    pageObj = pdfReader.getPage(index)
    print(pageObj.extractText())

我没问题,因为它看起来像是带有普通文本的普通PDF。另外,某些pdf也不存在此问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)