大学网站html模板,用什么技术做网站,安徽网站建站系统平台,网站海外推广怎么做PDF#xff08;可移植文档格式#xff09;文件是由Adobe创建的一种灵活的文件格式#xff0c;它允许文档在不同的软件、硬件和操作系统中一致地显示。每个PDF文件都包含对固定布局文档的全面描述#xff0c;包括文本、字体、图形和其他必要的显示元素。pdf通常用于文档共享… PDF可移植文档格式文件是由Adobe创建的一种灵活的文件格式它允许文档在不同的软件、硬件和操作系统中一致地显示。每个PDF文件都包含对固定布局文档的全面描述包括文本、字体、图形和其他必要的显示元素。pdf通常用于文档共享因为它们能够保持原始格式。然而以编程方式解析和解释PDF内容可能是一项挑战。这些困难包括pdf的复杂结构、不同的文本编码、复杂的布局、压缩的内容和嵌入的字体等问题。 我们最近评估了几个流行的Python PDF库如PyPDF/PyPDF2, PDFMiner.six, PyMuPDF, PDFplumber2,等。有些库适合提取文本有些适合提取图像有些速度很快等等。在本文中我们将重点介绍如何开始使用PDFMiner.six。最新信息请随时关注官方网站。 环境准备
安装依赖包
pip install pdfminer.six
pip install pdfminer.six[image]示例PDF文件可以在这里找到当然你也可以自己准备。让我们看看如何使用这些api
从PDF中提取文本从PDF中提取图像迭代PDF中的所有对象从PDF中提取TableOfContent ToC
抽取文本
通过高级API可用于从PDF中提取文本。
from pdfminer.high_level import extract_text
from os import pathpath path.abspath(path.dirname(__file__))
print(path)pdf_file path /sample01.pdf
text extract_text(pdf_file)
print(text)抽取每一页
from io import StringIOfrom pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.utils import open_filenamefrom os import pathpath path.abspath(path.dirname(__file__))
print(path)def iter_text_per_page(pdf_file, password, page_numbersNone, maxpages0,cachingTrue, codecutf-8, laparamsNone):if laparams is None:laparams LAParams()with open_filename(pdf_file, rb) as fp:rsrcmgr PDFResourceManager(cachingcaching)idx 1for page in PDFPage.get_pages(fp,page_numbers,maxpagesmaxpages,passwordpassword,cachingcaching,):with StringIO() as output_string:device TextConverter(rsrcmgr, output_string, codeccodec,laparamslaparams)interpreter PDFPageInterpreter(rsrcmgr, device)interpreter.process_page(page)yield idx, output_string.getvalue()idx 1def main():pdf_file path /sample02.pdffor count, page_text in iter_text_per_page(pdf_file):print(fpage# {count}:\n{page_text})print()if __name__ __main__:main()输出内容截取如下
page# 1:产品主要功能包括数据采集、数据治理以及数据产品应用。企业典型应用场景利用 AI 算法实现业务分类、聚类、回归预测以及时间序列预测等。在销售领域基于历史数据实现销售预测基于用户特征数据对客户分类实现精准营销在采购领域利用历史数据预测采购价格基于多维度指标实现供应商综合评价模型等。page# 2:
各类政策法规进行整理和归纳帮助用户更加方便快捷地获取所需的政策信息。。。。
抽取图像
提取图像的最简单方法是调用命令行工具pdf2txt.py。它是在安装PDFMiner时安装的并且位于Python可执行文件的相同位置。使用的操作系统。可执行文件’查找Python二进制文件的位置。
下面是示例用法
usage: pdf2txt.py [-h] [--version] [--debug] [--disable-caching] [--page-numbers PAGE_NUMBERS [PAGE_NUMBERS ...]][--pagenos PAGENOS] [--maxpages MAXPAGES] [--password PASSWORD] [--rotation ROTATION] [--no-laparams][--detect-vertical] [--line-overlap LINE_OVERLAP] [--char-margin CHAR_MARGIN] [--word-margin WORD_MARGIN][--line-margin LINE_MARGIN] [--boxes-flow BOXES_FLOW] [--all-texts] [--outfile OUTFILE][--output_type OUTPUT_TYPE] [--codec CODEC] [--output-dir OUTPUT_DIR] [--layoutmode LAYOUTMODE][--scale SCALE] [--strip-control]files [files ...]To extract all text from pdf:
pdf2txt.py --all-texts ../samples/manual.pdfTo extract all images from pdf:
pdf2txt.py --output-dir images ../sample03.pdf如果希望将其集成到应用程序中只需从pdf2txt.py复制源代码即可.
获取页数
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
from pdfminer.pdftypes import resolve1pdf_file ../samples/brocher1.pdfwith open(pdf_file, rb) as f:parser PDFParser(f)doc PDFDocument(parser)parser.set_document(doc)pages resolve1(doc.catalog[Pages])pages_count pages.get(Count, 0)print(pages_count)抽取表格数据
pdfminer抽取表格的输出看起来比PyPDF2好得多我们可以很容易地使用regex或split()提取所需的数据。但是在现实世界中PDF文档包含很多噪声id可以是不同的格式等等。我无法想象一个算法会考虑所有的事情。为了简化和加快我们的工作我建议将PDF文件转换为HTML格式
from io import StringIO
from pdfminer.high_level import extract_text_to_fp
from pdfminer.layout import LAParamsoutput StringIO()
with open(example.pdf, rb) as pdf_file:extract_text_to_fp(pdf_file, output, laparamsLAParams(), output_typehtml, codecNone)
with open(example.html, a) as html_file:html_file.write(output.getvalue())然后再利用html标签处理库抽取文本这种方法准确率应该能得到保障。