我从文档中提取了文本,并注意到该文本包含一些未知字符,例如:
"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()发布于 2015-01-13 02:46:04
你有一个编码错误:
>>> print u"modiقes".encode("cp1256").decode("mac_roman")
modifies注意,违规字符不是损坏一对字符fi的结果,而是损坏单个字符fi (U+FB01 'LATIN SMALL LIGATURE FI')的结果。
如果看不到您的代码,就不可能确切地说出这是如何发生的,但它可以归结为:您试图将Mac OS Roman文本解码为Windows 1256。如果你停止这样做,你就不会再有问题了。
https://stackoverflow.com/questions/27894201
复制相似问题