我想从 pdf 文档中提取以印地语输入的文本。我附上了 我正在处理的示例页面的图像。
我尝试使用 pdfminer 从中获取文本,但文本是乱码(可能是由于印地语字体)
现在我正在考虑将页面分成三部分,然后将每个部分分成两部分(分隔英文和印地文文本),然后在每一半上运行 ocr 以获取文本,但唯一的问题是我不知道印地文使用的字体所以我可能会再次收到乱码。
我的问题是,有没有更好的方法来处理印地语字体?如何找到字体名称?
我在您的 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