Используя PDFMiner.six Python3 печатает странные символы в файл - PullRequest
0 голосов
/ 06 мая 2019

В настоящее время я работаю с PDFMiner.six для извлечения текста из нескольких PDF-файлов. Глядя на мой вывод, я вижу, что я получаю некоторые странные преобразования специальных символов, таких как скобки:

Открывающие и закрывающие скобки:

Наконец, я удаляю все параграфы, определенные как две строки, содержащие текст с пустой строкой до и после 兲 более 50 процентов

Другие скобки:

enter image description here

具 TEXT 典

Plus:

Слова + Таблица

WORDS⫹TABLES

Минус:

(- 0,141)

共 ⫺1.41 兲

Испытание (SML * COMPLEX-LRG * COMPLEX) <0 </p>

Тест of SML ⴱ COMPLEX⫺LRG ⴱ COMPLEX LEX ⬍ 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 в качестве кодировки, я подумал, что это должно решить проблему, но это не так ...

Любая помощь приветствуется!

...