我从文档中提取了文本,并且我注意到文本中有一些未知字符,例如:
"An adversary modiقes the aggregation result"
很明显ق不是真正的角色,应该用“fi”代替 - 还有其他类似的例子。
我可以使用python使用正确的英文字符替换这些字符吗?
我编写了以下代码,用于从pdf文件中提取和解码文本流:
import zlib
file = open ("PDF_File.pdf"."rb").read() # read pdf file
objectPDF = re.findall('(\d+ \d+ obj.+?endobj)',file , re.DOTALL) # extract pdf
# objects
for item in objectPDF :
pdfstreams = re.findall('stream(.*?)endstream',item , re.DOTALL) # extract text
# stream
# encoded by
# flatedecode filter
for item in pdfstreams :
buffer = item
decomp = zlib.decompress(buffer) # decode each stream
pdf_txt = open("Txt_PDF.txt","w")
pdf_txt .write(decomp) # write the text to file
pdf_txt .close()
答案 0 :(得分:3)
您遇到编码错误:
>>> print u"modiقes".encode("cp1256").decode("mac_roman")
modifies
请注意,违规字符不是修改字符对fi
而是修改单个字符fi
(U+FB01 'LATIN SMALL LIGATURE FI')的结果。
如果没有看到您的代码,就不可能完全发生这种情况,但归结为:您尝试将Mac OS Roman文字解码为Windows 1256。如果你停止这样做,你应该停止解决问题。