Преобразование PDF-файла на местном языке в текстовый файл, но с изменением исходной кодировки - PullRequest
0 голосов
/ 12 января 2020

У меня есть файлы гимнов на местном языке в формате pdf (нуэрский язык), и я хотел изменить их на JSON, преобразовав их в текст, а затем в JSON, чтобы я мог сохранить их в базе данных, но текстовый файл приходит с другой кодировкой, чем исходный pdf после преобразования, даже не может прочитать ее, не знаю, есть ли у python способ сохранить исходную кодировку, или если javascript делает так, я могу использовать javascript вместо *1033* сæ бен сьендо ниаал, бе кæ шё бэ дет бен кян. Æ Jithæth Kuäär mì dììt mì gaañ kœœn, bæ kœn gañ kæ --akak ti jiääk diaal, Jithæth Kuäär mì dììt ræy ciëën nhiaal. Ca puåt jiaath kæ Kuìdä pàny.

ожидаемый результат:

Ожидаемый результат - исходный файл PDF Я попытался изменить кодировку с utf-8, равную python по умолчанию str-кодировка для pdf, но все равно получил тот же результат. когда я попробовал кодировку, он не читает локальные символы, такие как: ɛ, ŋ, ɣ, ɔ a̱, ä, ɛ̈ и o̱, он возвращает указанную выше латинскую кодировку на своих местах.

вот код и код c, даже если я изменю его на 16, 32 ничего не поможет.

>

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

def pdfparser(pdfDir, txtDir):
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    # Create a PDF interpreter object.
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    if pdfDir == "": 
        pdfDir = os.getcwd() + "\\" #if no pdfDir passed in 

    for pdf in os.listdir(pdfDir): #iterate through pdfs in pdf directory

        if pdf.endswith('.pdf'):
            print(pdf)
            pdfFilename = pdfDir + pdf 
            fp = open(pdfFilename,'rb')

            # Process each page contained in the document.
            for page in PDFPage.get_pages(fp):
                interpreter.process_page(page)
            data =  retstr.getvalue()

            textFilename = txtDir + pdf + ".txt"
            with open(textFilename, "w", encoding = 'utf-8') as f: #make text file
                f.write(data) #write text to text file

    return textFilename


if __name__ == '__main__':
    pdfparser('./pdfs/', './texts')  #those are the folder names where i stored pdf
                                     #and where I want to store the newly generated text files
...