2016-03-10 3 views
1

Я хочу извлечь текст, напечатанный на хинди из pdf-документа. Я приложил image of the sample page, с которым я имею дело.Извлечение текста, написанного на хинди из pdf в python

Я попытался с помощью pdfminer, чтобы получить текст из него, но текст искажен (может быть связано с хинди шрифтов)

Теперь я имею в виду разделения страницы на три части, а затем разделив каждую часть на две (разделяя текст на английском и хинди), а затем запускать ocr на каждую половину, чтобы получить текст, но проблема только в том, что я не знаю шрифт, используемый для хинди, поэтому я могу снова получить искаженный текст.

My Вопрос: Есть ли лучший способ справиться с шрифтами хинди? Как найти имя шрифта?

+0

ли вы быть в состоянии добавить ссылку на оригинальный PDF? –

+0

[Оригинал Pdf] (https://drive.google.com/file/d/0B6HtqTuwelWJeEtHb1F6Ty1YMlk/view?usp=sharing) –

+0

@Gaurav: У вас были какие-то возможности получить решение для вышеупомянутых вопросов? –

ответ

0

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

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from pdfminer.pdfpage import PDFPage 
from cStringIO import StringIO 

def convert_pdf_to_txt(path): 
    rsrcmgr = PDFResourceManager() 
    retstr = StringIO() 
    codec = 'utf-8' 
    laparams = LAParams() 
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) 

    with open(path, 'rb') as fp: 
     interpreter = PDFPageInterpreter(rsrcmgr, device) 
     password = "" 
     caching = True 
     pagenos = set() 

     for page in PDFPage.get_pages(fp, pagenos, password=password,caching=caching, check_extractable=True): 
      interpreter.process_page(page) 

     text = retstr.getvalue() 

    device.close() 
    retstr.close() 
    return text 

print convert_pdf_to_txt("Electoral roll - Faizabad.pdf") 

Он показывает, как utf-8, так что вы должны убедиться, что ваш вывод на консоль способна отображать с помощью этого.

Например:

भभग ससखखभककल मतदभतभ 11 1.रजजरभ आसशशकपपथममक ववददपलद रजजरप - सपमपनद779 420 359 0 779ननरभरचक नभमभरलल 2014 0S24उततर पददशवरधभन सभभ कदत कक ससखखभ ,नभम र आरकण सससनत:ललक सभभ कदत कक ससखखभ ,नभम र आरकण सससनत: 1 . पकनरलकण कभ वरररणपकनरलकण कभ ररर : 2014अहतभर कक नतथस: 01.01.2014पकनरलकण कभ सररप: ससककपत पकनरलकणपकभशन कक नतथस: 01.10.2013पकनरमकदण कक नतथस : 15.03.2014 

Чтобы определить список шрифтов, которые он использует, вы можете просто загрузить PDF в устройство для чтения PDF, таких как Adobe Reader или Foxit Reader и выберите Properties из меню Файл. Отсюда вы можете выбрать Fonts. Когда я попытался это с Foxit Reader он отображается следующие шрифты:

Mangal-Bold 
Arial 
Mangal 
Arial Bold 
Times-New-Roman-Bold 
+1

Я тоже пробовал. Но извлеченный текст неверен даже не 60-70% –

+0

У меня также проблема с той же проблемой. Любое другое релевантное решение по этому вопросу? –