Я хочу извлечь бенгальский текст из PDF-файла

Я хочу преобразовать бенгальский PDF-файл в текстовый файл. Текущий инструмент, который я использую, pdftotext от poppler-utils, не дает точных результатов, поскольку в PDF-файле используется шрифт Kalpurush. Существуют ли какие-либо инструменты, которые позволяют мне указать шрифт Kalpurush для получения точных результатов? Я хотел бы сделать это, используя Python, PHP, JS или сценарий Bash.

Вы пробовали PyMuPDF ? Примечание. Я сопровождаю и создаю PyMuPDF.

Jorj McKie 28.05.2024 18:24
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
120
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете попробовать использовать механизм OCR Tesseract. Он поддерживает бенгальский язык и позволяет указать шрифт, который будет использоваться для распознавания текста. Вам необходимо установить пакеты:

pip install pdf2image pytesseract

Затем конвертируйте PDF в изображения:

images = convert_from_path(pdf_path)

И, наконец, извлеките текст:

text = "" 
for page in images:
    # Use pytesseract to extract text from the image
    # Specify the Kalpurush font and the Bengali language code
    text += pytesseract.image_to_string(page, lang='ben', config=f'--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ் --tessdata-dir "{font_path}"')

Альтернативно вы можете использовать библиотеку pdfplumber, которая извлекает текст из PDF-файлов и поддерживает указание собственных шрифтов. Аналогично вам необходимо установить его:

pip install pdfplumber

Затем извлеките текст из PDF-файла:

with pdfplumber.open(pdf_path) as pdf:
    # Load the custom font
    pdf.load_font(font_path)

    text = ""
    for page in pdf.pages:
        text += page.extract_text()

PyMuPDF позволяет писать и читать текст, написанный бенгальскими шрифтами, например. также kalpurush.ttf:

import pymupdf

fontfile = "kalpurush.ttf"
doc = pymupdf.open()  # make a new PDF
page = doc.new_page()  # add a page
rect = pymupdf.Rect(100, 100, 400, 400)  # write text inside this

text = """সমস্ত মানুষ স্বাধীনভাবে সমান মর্যাদা এবং অধিকার নিয়ে জন্মগ্রহণ
করে। তাঁদের বিবেক এবং বুদ্ধি আছে; সুতরাং সকলেরই একে অপরের প্রতি ভ্রাতৃত্বসুলভ
 মনোভাব নিয়ে আচরণ করা উচিৎ।"""

# instructions to use the font file
css = """@font-face {font-family: bengali; src: url(kalpurush.ttf);}
* {font-family: bengali;}
"""

# search current folder for font file
arch = pymupdf.Archive(".")

# insert the text
page.insert_htmlbox(rect, text, css=css, archive=arch)
doc.ez_save("bengali.pdf")

Читаем текст еще раз:

import pymupdf
doc = pymupfg.open("bengali.pdf")
page = doc[0]
text = page.get_text()

Другие вопросы по теме