Как читать PDF-файлы на азиатских языках (китайский, японский, тайский и т. д.) и хранить в строке в python

Я использую PyPDF2 для чтения файлов PDF в python. Хотя она хорошо работает для языков на английском и европейских языках (с алфавитами на английском языке), библиотека не может читать азиатские языки, такие как японский и китайский. Я пробовал encode('utf-8'), decode('utf-8'), но ничего не работает. Он просто печатает пустую строку при извлечении текста.

Я пробовал другие библиотеки, такие как texttract и PDFMiner, но пока безуспешно.

Когда я копирую текст из PDF и вставляю в блокнот, символы превращаются в какой-то текст произвольного формата (вероятно, в другой кодировке).

def convert_pdf_to_text(filename):
    text = ''
    pdf = PyPDF2.PdfFileReader(open(filename, "rb"))
    if pdf.isEncrypted:
        pdf.decrypt('')
    for page in pdf.pages:
        text = text + page.extractText()
    return text

Может кто-то указать мне верное направление?


person Nikunj Agarwal    schedule 22.06.2018    source источник
comment
Код, который вы показываете, выглядит нормально. Вероятно, проблема либо в том, как PDF кодирует текст, либо в библиотеке ошибка. На Github есть открытая проблема, которая может быть связана с вашей проблемой.   -  person lenz    schedule 22.06.2018
comment
Можете ли вы предоставить образец PDF? Я могу думать о некоторых возможных причинах, но трудно сказать без дополнительной информации.   -  person polm23    schedule 25.06.2018


Ответы (1)


Я тоже столкнулся с подобной проблемой. Я мог бы решить эту проблему, используя библиотеку tika-python.

import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('fileName.pdf')
print(parsed["metadata"])
print(parsed["content"])

Дополнительную информацию о библиотеке можно найти по здесь

person krishna    schedule 16.07.2018
comment
Кажется, это именно то, что я искал. Большое спасибо! - person Nikunj Agarwal; 17.07.2018
comment
что делает tika.initVM()? - person jxpython; 28.09.2018