Проблема с декодированием с помощью fitz.Документ на Python 3.7

#python #pymupdf #text-decoding

#python #pymupdf #декодирование текста

Вопрос:

Я хочу извлечь текст PDF и использовать некоторые регулярные выражения для фильтрации информации.

Я пишу на Python 3.7.4, используя fitz для синтаксического анализа pdf. PDF-файл написан на немецком языке. Мой код выглядит следующим образом:

 doc = fitz.open(pdfpath)
pagecount = doc.pageCount
page = 0
content = ""

while (page < pagecount):
    p = doc.loadPage(page)
    page  = 1
    content = content   p.getText()
  

Распечатав содержимое, я понял, что первая (и важная) половина документа декодируется как странная смесь японских (?) знаков и других, вроде этого: ョ。オウキ・ゥエオョァ@ュ .

Я пытался решить ее с помощью разных декодирований (latin-1, iso-8859-1), кодировка определенно в utf-8.

 content= content p.getText().encode("utf-8").decode("utf-8")
  

Я также пытался получить текст с помощью minecart:

 import minecart

file = open(pdfpath, 'rb')

document = minecart.Document(file)

for page in document.iter_pages():
    for lettering in page.letterings :
        print(lettering)
  

что приводит к той же проблеме.

При использовании textract первая половина является пустой строкой:

 import textract

text = textract.process(pdfpath)
print(text.decode('utf-8'))
  

То же самое с PyPDF2:

 import PyPDF2

    
pdfFileObj = open(pdfpath, 'rb')

pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
for index in range(0, pdfReader.numPages) :
    pageObj = pdfReader.getPage(index)
    print(pageObj.extractText())
  

Я не понимаю проблему, поскольку это выглядит как обычный PDF с обычным текстом. Также у некоторых PDF-файлов этой проблемы нет.

Комментарии:

1. можете ли вы включить ссылку на образец pdf.

2. К сожалению, мне не разрешено из-за правил защиты данных, но первая половина содержит текст в формате таблицы, вторая половина — изображения с описаниями