使用PDFMiner.six Python3将奇怪的字符输出到文件

时间:2019-05-06 09:38:29

标签: python unicode utf-8 character-encoding pdf-extraction

我目前正在使用PDFMiner.six从多个PDF中提取文本。查看我的输出,可以看到我得到了一些奇怪的特殊字符转换,例如brickt:

左括号和右括号:

最后,我删除所有共定义为包含文本的两行的段落 兲之前和之后的空白行超过50%

其他括号:

enter image description here

具文本典范

加号:

单词+表格

WORDS⫹TABLES

减号:

(-0.141)

共⫺1.41兲

(SML * COMPLEX-LRG * COMPLEX)<0的测试

共SMLⴱCOMPLEX⫺LRGⴱCOMPLEX兲0的测试

我正在使用以下代码:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
import os
import re
# from datetime import datetime
# a = datetime.now()
i = 0
path = r"C:\Users\1_T_Python"
save_to = r"C:\Users\1_T\txt files"

for filename in os.listdir(path):
    if filename.endswith(".pdf"):
        rsrcmgr = PDFResourceManager()
        retstr = StringIO()
        codec = 'utf-8'
        laparams = LAParams()
        device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
        fp = open(path+"\\"+filename,'rb')
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        password = ""
        caching = True
        pagenos=set()
        for page in PDFPage.get_pages(fp, pagenos, password=password,caching=caching, check_extractable=True):
            interpreter.process_page(page)
        fp.close()
        device.close()
        string = retstr.getvalue()
        retstr.close()
        #print(string)
        with open(save_to+"\\"+filename+".txt", "w", encoding="utf-8") as text_file:
            text_file.write(string)
        i = i+1
        print(i)

我认为这是一个编码/解码问题,但是到目前为止,在SO上找不到任何解决方案。使用utf-8作为编码,我认为这应该可以解决问题,但事实并非如此。

任何帮助表示赞赏!

0 个答案:

没有答案