当前位置: 首页 > news >正文

Python PDF 解析入门:提取信息、表格与元数据

1. 环境准备

1.1 安装免费 Python PDF 库

可以通过 pip 直接安装:

pip install Spire.Pdf.Free

安装后,在代码中导入所需模块即可:

from spire.pdf import * from spire.pdf.common import *

注意:该库的免费版本对处理的 PDF 页数有限制(每次最多 10 页),本文示例均基于免费版的功能范围。

1.2 基本工作流程

使用该库读取 PDF 的一般步骤为:

  1. 创建PdfDocument对象。
  2. 调用LoadFromFile()方法加载 PDF 文件。
  3. 通过Pages集合访问每一页。
  4. 使用对应提取器(如PdfTextExtractorPdfImageHelper)提取内容。
  5. 关闭文档释放资源。

2. 读取 PDF 基本信息(页数、页面尺寸等)

在提取具体内容前,通常需要先了解文档的元数据。

from spire.pdf import PdfDocument # 加载 PDF 文档 pdf = PdfDocument() pdf.LoadFromFile("sample.pdf") # 获取页数 page_count = pdf.Pages.Count print(f"总页数: {page_count}") # 遍历每一页,获取页面尺寸 for i in range(page_count): page = pdf.Pages.get_Item(i) width = pdf.Size.Width height = page.Size.Height print(f"第 {i+1} 页尺寸: {width} x {height}") pdf.Close()

输出示例:

总页数: 5 第 1 页尺寸: 595.0 x 842.0 第 2 页尺寸: 595.0 x 842.0 ...

3. 提取 PDF 中的文本

文本提取是最常见的需求。PdfTextExtractor类提供了逐页提取文本的方法。

from spire.pdf import * def extract_text_from_pdf(pdf_path, start_page=1, end_page=None): pdf = PdfDocument() pdf.LoadFromFile(pdf_path) total_pages = pdf.Pages.Count if end_page is None or end_page > total_pages: end_page = total_pages # 免费版最多处理前10页,此处限制输出 end_page = min(end_page, 10) for i in range(start_page - 1, end_page): page = pdf.Pages.get_Item(i) extractor = PdfTextExtractor(page) # 提取文本,可以设置提取参数(如是否保留空白布局) options = PdfTextExtractOptions() options.IsExtractAllText = True # 提取全部文本(忽略表格/图片区域) text = extractor.ExtractText(options) print(f"--- 第 {i+1} 页文本 ---") print(text) print("\n") pdf.Close() extract_text_from_pdf("sample.pdf", end_page=2)

说明:如果 PDF 中的文字为扫描图片(无文本层),则无法直接提取,需要配合 OCR 技术(该库不提供 OCR 功能)。


4. 提取 PDF 中的图片

Free Spire.PDF 提供了PdfImageHelper来提取页面中的图片资源。

import os from spire.pdf import * def extract_images_from_pdf(pdf_path, output_dir="images"): """ 提取 PDF 中所有图片并保存到指定文件夹 注意:免费版最多处理前 10 页 """ # 创建输出目录 if not os.path.exists(output_dir): os.makedirs(output_dir) # 加载 PDF 文档 pdf = PdfDocument() pdf.LoadFromFile(pdf_path) # 免费版限制:最多处理前 10 页 page_limit = min(pdf.Pages.Count, 10) # 准备图片提取器 image_helper = PdfImageHelper() # 遍历页面 for page_index in range(page_limit): page = pdf.Pages.get_Item(page_index) images_info = image_helper.GetImagesInfo(page) # 保存当前页的所有图片 for i, img_info in enumerate(images_info): # Image.Save() 方法会根据扩展名自动保存为 PNG 格式 img_info.Image.Save(f"{output_dir}/page_{page_index}_img_{i}.png") print(f"已保存: page_{page_index}_img_{i}.png") pdf.Close() print(f"图片提取完成,共处理 {page_limit} 页,图片保存在 {output_dir} 目录下") # 使用示例 extract_images_from_pdf("sample.pdf")

5. 提取 PDF 中的表格

该库未提供直接导出表格为 CSV/Excel 的一键方法,但可以借助PdfTableExtractor获取表格结构,然后手动解析。

from spire.pdf import * def extract_tables_from_pdf(pdf_path): pdf = PdfDocument() pdf.LoadFromFile(pdf_path) # 免费版最多处理前10页 page_limit = min(pdf.Pages.Count, 10) extractor = PdfTableExtractor(pdf) for i in range(page_limit): page = pdf.Pages.get_Item(i) # 提取当前页的所有表格 tables = extractor.ExtractTable(i) if tables: print(f"第 {i+1} 页发现 {len(tables)} 个表格") for t_idx, table in enumerate(tables): print(f" 表格 {t_idx+1}:") rows = table.GetRowCount() cols = table.GetColumnCount() print(f" 行数: {rows}, 列数: {cols}") # 获取表头(第一行) if rows > 0: header = [] for c in range(cols): header.append(table.GetText(0, c)) print(f" 表头: {header}") # 获取前3行数据示例 for r in range(min(rows, 4)): row_data = [] for c in range(cols): row_data.append(table.GetText(r, c)) print(f" 第{r+1}行: {row_data}") else: print(f"第 {i+1} 页未发现表格") pdf.Close() extract_tables_from_pdf("sample.pdf")
http://www.jsqmd.com/news/1094488/

相关文章:

  • MIMIC-IV数据库实战:从数据表解析到临床研究场景构建
  • 3分钟搞定M3U8视频下载:告别在线观看限制的高效工具
  • 34 年匠心造好机,大连欣科蜂窝板生产线实力稳居区域第一
  • 办公提效工具 OpenClaw 安装全流程,部署报错统一处理方案(含安装包)
  • 面向真实科研场景,构建由Codex、Claude Code、OpenClaw、Hermes四位“AI研究员“组成的可迭代、可迁移的科研协作团队
  • 程序员量化交易实战 24:把模拟盘账户状态保存下来
  • 如何轻松掌控电脑风扇:FanControl完整指南助你实现静音与性能的完美平衡
  • 从点击图标到 HomeActivity.onCreate() 完整链路
  • 做自媒体,我是怎么用花生AI绕过剪辑这道坎的
  • 光刻胶用增韧剂及其合成技术:苯乙烯-丁二烯嵌段共聚物(SBS)、聚丙二醇二缩水甘油醚、聚甲基丙烯酸甲酯、聚四氢呋喃丙烯酸脂(上)
  • 2026ChatGPT、DEEPSEEK、豆包等AI搜索结果优化方法?
  • ChatGPT API文档隐藏功能曝光:`response_format`、`tool_choice`与`parallel_tool_calls`三大未公开能力(附实测代码库)
  • 无广告待办工具盘点,2026 多款清单软件优劣分析
  • 使用低代码爬虫软件自动化采集电商商品数据
  • 手把手教你用8款AI论文平台,极速搞定各类论文
  • 从 AI Agent 到具身智能:当智能开始拥有“身体”
  • AI 提速 3 倍,交付反而慢了?
  • DeepEval终极指南:5分钟掌握AI模型评估框架的完整配置
  • Android应用安全实践:SafetyNet机制解析与safetynett库集成指南
  • 网安新手攻克 Kali 难题大全!各类高频报错一次性给出解决方案,搞定环境问题稳步进阶,冲刺高薪安全赛道
  • 肌理质感艺术木纹与仿石铝单板轻盈演绎
  • 5分钟免费实现VR视频转2D的终极指南:VR-Reversal完整教程
  • QNAP TS-h2490FU 2U 全闪存架构在精密电子贴片制造网中
  • 轻量级图书馆借阅管理系统(读者管理、借还书记录)
  • Minecraft光影终极指南:用Revelation打造电影级方块世界
  • 从单点工具到全链路智能体:跨境电商自动化的下一步:2026全链路AI Agent架构深度拆解与落地指南
  • 【工具推荐】剁手前先泼盆冷水!我做了一个让你理性消费的神器——消费泼冷水计算器
  • 3个MeEdu二次开发实战技巧:从API调用到Hook扩展的深度定制指南
  • 5步掌握Res-Downloader:跨平台资源下载工具全面指南
  • Audition软件安装步骤(附安装包)Audition AU2026 超详细下载安装教程