我间接阅读过有关带标签的 PDF 的信息TabbyPDF:基于 Web 的 PDF 表格提取系统 https://www.researchgate.net/publication/327269137_TabbyPDF_Web-Based_System_for_PDF_Table_Extraction_24th_International_Conference_ICIST_2018_Vilnius_Lithuania_October_4-6_2018_Proceedings听起来好像可以获取 PDF 内容的语义信息。因此,不仅是作者/标题/页数,还可能是章节或标题所在的位置。
这可能吗?
以下是一些要显示的 PDF 示例(以防万一):
- Lorem Ipsum 表测试 https://github.com/MartinThoma/algorithms/blob/master/PDF/PDF-export-example.pdf
- 卡米洛特边缘 TOL https://github.com/camelot-dev/camelot/blob/master/tests/files/edge_tol.pdf
我尝试过的
我可能会走完全错误的方向,但我得到的信息只是文档的元数据。不是它的内容/内容结构。我希望有类似语义 HTML 元素的东西,我知道有两个部分、一个表格、三个段落。甚至可能该表有标题、42 行和 123 列。
PyPDF2
from PyPDF2 import PdfFileReader
def get_info(path):
with open(path, "rb") as f:
pdf = PdfFileReader(f)
info = pdf.getDocumentInfo()
nb_pages = pdf.getNumPages()
info = dict(info)
info['nb_pages'] = nb_pages
return info
if __name__ == "__main__":
path = "PDF-export-example.pdf"
info = get_info(path)
for key, value in sorted(info.items()):
print(f"{key:<15}: {value}")
Lorem Ipsum 表测试:
/Author : Martin Thoma
/CreationDate : D:20200730020133-07'00'
/Creator : Microsoft Word
/ModDate : D:20200730020133-07'00'
nb_pages : 1
卡米洛特边缘 TOL:
/Producer : PyPDF2
nb_pages : 1
pdfminer
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
def get_info(path):
with open(path, "rb") as f:
parser = PDFParser(f)
doc = PDFDocument(parser)
return doc.info
if __name__ == "__main__":
path = "edge_tol.pdf"
info = get_info(path)
for el in info:
for key, value in el.items():
print(f"{key:<15}: {value}")
Lorem Ipsum 表测试:
Author : b'Martin Thoma'
Creator : b'Microsoft Word'
CreationDate : b"D:20200730020133-07'00'"
ModDate : b"D:20200730020133-07'00'"
卡米洛特边缘 TOL:
Producer : b'PyPDF2'