pdf相关的python库

本文说明

最近接触pdf信息抽取,使用了几个操作pdf的python库,这里简单纪录下。

pypdf

pypdf是一个免费的、开源的纯python PDF库,能够拆分、合并、裁剪和转换PDF文件的页面。它还可以为PDF文件添加自定义数据、查看选项和密码。pypdf也可以从pdf中检索文本和元数据。

总结:主要用来修改pdf,特别是拆分和合并,使用下来很方便。

PyPDF2在3.0.1版本后不再维护了,这个项目变成 了pypdf。

安装:pip install pypdf

pdfplumber

该库可以从pdf中提取文本和表格。支持可视化调试功能。

支持文本提取的库不少,但是支持表格提取的并不算多。

提取表格的效果我试了下,勉强能用,错误不少,可能需要尝试不同的提取设置选项才能得到较好的效果。

安装方法:pip install pdfplumber

pdfservices-python-sdk

这是adobe官方pdf转换服务的sdk库,需要在adobe网站注册账号才能用。少量使用免费,大量使用收费。

我试了下它的pdf表格提取功能,效果比较惊艳,比开源库的效果要好不少。但是大量调用收费,这也是个缺点。

adobe官方有个展示pdf信息抽取的可视化页面,用于可视化展示它的api进行信息抽取的效果:https://acrobatservices.adobe.com/dc-visualizer-app/index.html

安装方法:pip install pdfservices-sdk

###PyMuPDF

这个库的功能类似pypdf和pdfplumber的集合体,既可以对pdf进行编辑,又可以提取pdf信息。但是不支持提取表格。

我没使用过这个库,但是看到h2ogpt这个项目在做文档知识抽取的时候用PyMuPDF提取文本内容,就写下来了。

比较

这里摘抄pdfplumber的github说明里的一段比较文字:

python 复制代码
pdfminer.six provides the foundation for pdfplumber. It primarily focuses on parsing PDFs, analyzing PDF layouts and object positioning, and extracting text. It does not provide tools for table extraction or visual debugging.

PyPDF2 is a pure-Python library "capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files." It can extract page text, but does not provide easy access to shape objects (rectangles, lines, etc.), table-extraction, or visually debugging tools.

pymupdf is substantially faster than pdfminer.six (and thus also pdfplumber) and can generate and modify PDFs, but the library requires installation of non-Python software (MuPDF). It also does not enable easy access to shape objects (rectangles, lines, etc.), and does not provide table-extraction or visual debugging tools.

camelot, tabula-py, and pdftables all focus primarily on extracting tables. In some cases, they may be better suited to the particular tables you are trying to extract.
相关推荐
数字化转型分享点滴7 小时前
机加工车间上线 SH‑AIOT 物联网会遇到哪些常见实施难点
python·物联网
0566467 小时前
agent学习——流式响应与文本切分
网络·python·学习
OPEN-F7 小时前
Python进阶教程:正则表达式进阶与文本处理
开发语言·python·正则表达式
新网企兴8 小时前
2026年陕西做GEO推广,找新网企兴解决获客难题
python·搜索引擎
青 春 记 忆8 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
for_ever_love__8 小时前
python基础语法学习: 面向对象的三大特性
开发语言·python·学习
Spider赵毅8 小时前
Python爬虫踩坑实录:BeautifulSoup使用中的高频问题排查
爬虫·python·beautifulsoup
怪奇云呼军9 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
zmzb010310 小时前
Python课后习题训练记录Day194
python·opencv·计算机视觉
benchmark_cc11 小时前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash