从PDF文档或图片中自动识别并提取文字内容,支持PNG、JPG、PDF等多种格式,采用双轮识别机制校验数字字符,保留原始格式输出结构化Markdown结果。适用于合同扫描件、纸质文档数字化、名片识别等场景。
PDF和图片文字识别提取工具:PyMuPDF驱动的高精度OCR提取技能
【适用场景】
适用场景一:纸质文档数字化
当用户上传纸质合同、发票、名片、证书等扫描件图片,要求提取其中文字时使用。本技能通过双轮识别机制确保数字字符(6/8/9/0/3等易混淆字符)的高准确率。适用场景二:PDF文字内容提取
当用户上传PDF文件(文字版或扫描版),要求提取其中文字内容时使用。支持自动判断PDF是否已包含可提取的文字,对扫描版PDF自动启用OCR识别。适用场景三:图片文字识别
当用户上传包含文字的图片(截图、照片、截图签名等),要求识别并提取文字时使用。技能自动判断图片是否包含文字,避免对纯图片错误返回空白结果。【操作步骤】
Step 1:接收并验证用户文件
1. 确认用户已上传图片或PDF文件 2. 获取文件的访问路径或URL 3. 判断文件类型:图片格式(PNG/JPG/JPEG/GIF/WebP/BMP)或PDF文档Step 2:图片文字全局识别(第一轮)
1. 使用 read_image 工具识别图片全部内容 2. 在prompt中明确要求识别所有文字:标题、正文、注释、水印等 3. 对数字字符特别注意视觉形状特征(封闭圆圈数、开口方向、弧线走向) 4. 确保6/8/9/0/3等易混淆数字准确识别Step 3:判断文字存在性
- 如果检测到文字:进入步骤4 - 如果未检测到文字:告知用户"图片中未包含可提取的文字"Step 4:数字二次聚焦校验
⚠️ 重要:校验过程必须静默执行,不在对话中展示,只向用户展示最终结果策略A:局部放大验证 - 再次使用 read_image,但这次只要求识别特定数字串区域 - prompt模板:「请只关注图片中的数字串 [上下文描述],逐位描述每个数字字符的视觉形状,然后给出最终判断结果」
策略B:交叉验证 - 将第一轮的形状描述与第二轮的独立判断进行对比 - 两轮结果一致 → 确认为最终结果 - 两轮结果不一致 → 标注存疑字符
Step 5:提取并整理文字
1. 提取图片中的所有文字内容 2. 保持原有的结构和排版 3. 整理为易读的格式输出Step 6:PDF文件处理
1. 使用PyMuPDF库(pymupdf>=1.23.0)打开PDF文件 2. 提取PDF中的文字内容 3. 如果PDF为扫描版图片集合,启用OCR识别 4. 对提取的数字执行二次校验(同图片处理流程)【代码模板】
```python
环境准备
pip install pymupdf>=1.23.0
import fitz # PyMuPDF
def extract_text_from_pdf(pdf_path): """从PDF提取文字内容""" doc = fitz.open(pdf_path) text_content = [] for page_num in range(len(doc)): page = doc[page_num] text = page.get_text("text") if text.strip(): text_content.append(f"=== 第{page_num + 1}页 ===\n{text}") return "\n\n".join(text_content)
def extract_text_from_image(image_path): """图片文字识别(需配合LLM的read_image工具)"""
实际使用时通过Agent调用read_image工具
prompt = "请识别图片中所有文字内容,包括标题、正文、注释、水印等"
pass典型调用
pdf_text = extract_text_from_pdf("document.pdf") print(pdf_text) ``````markdown
数字字符视觉特征速查表
| 数字 | 关键视觉特征 |
|---|---|
| 8 | 上下两个封闭圆圈,像雪人/沙漏 |
| 6 | 仅下方一个封闭圆圈,顶部向左弯弧 |
| 9 | 仅上方一个封闭圆圈,底部向下竖线 |
| 0 | 完整封闭椭圆,无开口 |
| 3 | 右侧开口,两个弧形朝右 |
| 5 | 顶部横线+左侧竖线+下方圆弧 |
【复盘要点】
要点一:双轮识别机制的价值
第一轮全局识别可能对相似数字字符产生误判,第二轮局部聚焦验证通过视觉特征对比可有效纠正错误。对于合同金额、日期、订单号等关键数字,务必执行二次校验。要点二:格式保留的重要性
提取文字时保持原有结构和排版,使输出结果更易阅读。合同条款、财务报表等文档的结构化输出能大幅提升后续处理效率。要点三:扫描版PDF的处理
扫描版PDF本质是多张图片合集,需要先转换为图片再执行OCR识别。PyMuPDF可自动判断PDF是否为扫描版并选择合适的处理方式。要点四:依赖管理
本技能依赖 PyMuPDF 库(版本>=1.23.0),安装命令:`pip install pymupdf>=1.23.0`。确保环境配置正确后再执行提取任务。来源:SkillHub https://skillhub.cn/skills/user_5f9c21aa/pdf-image-text-extractor