我想从pdf文档中提取hindi中输入的文本。我附上了我正在处理的image of the sample page。
我尝试过使用pdfminer从中获取文本,但文字是乱码(可能是因为印地文字体)
现在我正在考虑将页面拆分为三个部分,然后将每个部分分成两部分(分隔英文和印地文文本),然后在每一半上运行ocr以获取文本,但只有问题是我不知道使用的字体因为印地文所以我可能会再次出现乱码。
我的问题是,有没有更好的方法来处理印地文字体?我怎样才能找到字体名称?
答案 0 :(得分: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