python функция игнорирует ошибки кодирования - PullRequest
0 голосов
/ 28 марта 2020

Я запускаю этот скрипт и получаю сообщение об ошибке: UnicodeEncodeError: код 'charmap' c не может кодировать символ '\ u25a0' в позиции 26492: символ отображается на неопределенный

Может ли это быть определено или лучше просто игнорировать? Я пытался игнорировать в разных частях программы и думаю, что я прочитал существующие вопросы, касающиеся кодирования. Не знаю, как это сделать. Я предполагаю, что будет более одного типа ошибки кодирования, т.е. разные символы, которые выдают ошибку, так как у меня много документов.

import io, os, glob
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage


def convert(fname, pages=None):
    if not pages:
        pagenums = set()
    else:
        pagenums = set(pages)

    output = io.StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    infile = open(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text 
    print(text)



def convertMultiple(pdf_dir, txt_dir):
    if pdf_dir == "": pdf_dir = os.getcwd()  
    for filepath in glob.iglob(f"{pdf_dir}/**/*.pdf", recursive=True):
        text = convert(filepath)
        root, _ = os.path.splitext(filepath) # Remove extension
        txt_filepath = os.path.join(txt_dir, os.path.relpath(root, pdf_dir)) + ".txt"
        txt_filepath = os.path.normpath(txt_filepath) 
        print(txt_filepath)
        os.makedirs(os.path.dirname(txt_filepath), exist_ok=True)
        with open(txt_filepath, "wt") as f:
            f.write(text)


pdfDir = r"C:/Users/pdf/"
txtDir = r"C:/Users/txt/"
convertMultiple(pdfDir, txtDir) 
...