我使用pdfminer解析某些类型的pdf(仅用于文本),如学位证书等。因此,对于特定机构,这些类型保持不变,并且可能因不同机构而异
因为,我是新手,如果我能对如何解析布局中的不同对象(如-注册号)有任何想法,我将不胜感激。分析或操纵边界框或任何曲线等的不同方式有哪些
这可能是广泛的,但考虑到pdfminer的文档,它似乎会帮助更多的用户。下面是我开始使用的示例代码:-
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams, LTTextBox, LTTextLine, LTImage, LTFigure
from pdfminer.converter import PDFPageAggregator
from pdfminer.converter import TextConverter
from pdfminer.converter import HTMLConverter
from io import StringIO
def get_layouts(pdf_doc):
fp = open(pdf_doc, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
parser.set_document(doc)
#print (doc.catalog)
try:
outlines = doc.get_outlines()
for (level, title, dest, a, se) in outlines:
print (' ' * level, title)
except PDFNoOutlines:
pass
if not doc.is_extractable:
raise PDFTextExtractionNotAllowed
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
text = ''
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if isinstance(lt_obj, LTTextBox) or isinstance(lt_obj, LTTextLine):
text += lt_obj.get_text()
break
return text
如果每个记录上的必要信息位于完全相同的位置,则可以使用每个LTTextContainer(LTTextContainer.x0、LTTextContainer.x1、LTTextContainer.y0、LTTextContainer.y1)的x和y坐标来查找LTTextContainer的位置。不过,如果不同的学校有不同的证书格式,这可能行不通
相关问题 更多 >
编程相关推荐