P
PDF与图片文字提取
作者:鹿Sir办公效率v1
从 PDF、扫描文档和图片中可靠恢复可读文字与版面结构。自动区分原生文本 PDF、扫描型 PDF 与混合型 PDF,优先使用高保真的文本层解析,在低文字密度、异常编码或扫描页面时切换视觉识别;支持分页、段落、标题、列表、表格、页眉页脚、关键数字、置信风险和结果校验,按用户需要输出原文转写、结构化 Markdown、纯文本或可保存文件。适用于合同、论文、票据、表单、截图、扫描件、书页和多页资料。
下载量
384
点赞
93
价格
免费
技能文档
---
name: document-vision-text-recovery
slug: document-vision-text-recovery
version: 1.0.0
displayName: PDF和图片文字提取
description: 从 PDF、扫描文档和图片中可靠恢复可读文字与版面结构。自动区分原生文本 PDF、扫描型 PDF 与混合型 PDF,优先使用高保真的文本层解析,在低文字密度、异常编码或扫描页面时切换视觉识别;支持分页、段落、标题、列表、表格、页眉页脚、关键数字、置信风险和结果校验,按用户需要输出原文转写、结构化 Markdown、纯文本或可保存文件。适用于合同、论文、票据、表单、截图、扫描件、书页和多页资料。
category: 办公效率
dependency:
python:
- pymupdf>=1.24.0
title: PDF与图片文字提取
---
# PDF和图片文字提取
## 1. 核心定位
本 Skill 的目标不是“把看到的字随便抄下来”,而是**尽可能保真地恢复文档中的文字、阅读顺序和结构,并对高风险内容进行针对性复核**。
处理对象包括:
- 单张图片:PNG、JPG/JPEG、WEBP、BMP、TIFF、GIF 等常见格式。
- PDF:原生文字 PDF、扫描型 PDF、文字与扫描混合型 PDF。
- 典型文档:合同、论文、报告、发票/票据、表单、证件、书籍页面、网页截图、聊天截图、宣传图。
默认原则:
1. **先判断文档类型,再选择识别路径。**
2. **原生 PDF 优先直接提取文本层,视觉识别作为补救,而不是默认替代。**
3. **扫描页必须经过视觉/OCR 路径,不能把“文本层为空”误判为“页面没有文字”。**
4. **保持阅读顺序与结构优先于制造漂亮 Markdown。**
5. **不确定的字符宁可标记风险,也不要伪装成确定结果。**
6. **关键数字、代码、编号、金额和表格数据要采用更严格的复核策略。**
---
## 2. 任务识别
收到文件后,先判断用户真正需要的输出类型:
| 用户意图 | 默认动作 |
| -------------------------- | ----------------------------------------- |
| “提取文字” | 完整转写,尽量保持结构 |
| “把 PDF 转成文字” | 全文提取,分页保留 |
| “识别图片里的内容” | 视觉识别后按阅读顺序输出 |
| “只要正文” | 去除明显页眉、页脚、装饰元素,正文优先 |
| “只提取表格” | 单独恢复表格,不把单元格拼成一段文字 |
| “提取关键数字/编号” | 只返回目标字段,并进行二次复核 |
| “保存为 Markdown/TXT” | 先完成识别与校验,再生成文件 |
| “告诉我这份文件写了什么” | 识别后进入摘要/问答流程,而非机械全文输出 |
如果用户没有指定范围,对单个文件默认处理全部页面;对超长文件可以先建立页面级诊断,再分批恢复全文。
---
## 3. 技能工作流(总体决策流程)
### 阶段 A:文件与页面诊断
对 PDF:
1. 获取页数、页面尺寸、元数据和加密状态。
2. 对每页计算文字层信息,例如字符数、文字块数、图片数量、页内文字面积占比等。
3. 将页面归类为:
- `native-text`:有可靠文本层;
- `scanned`:几乎无文本层但存在页面图像;
- `mixed`:同时存在文本层和图片内容;
- `suspicious`:文本层异常,如字符乱码、编码异常、字符极少但页面明显有内容。
4. 仅针对需要识别的页面触发视觉/OCR,不要无脑把整本 PDF 全部栅格化。
对图片:
1. 检查分辨率、方向、透明背景、是否明显倾斜、是否存在复杂背景。
2. 判断是否存在文字区域以及可能的阅读方向。
### 阶段 B:选择识别路径
**原生 PDF** → 文本层提取 → 结构恢复 → 风险检测 → 必要时局部视觉复核。
**扫描 PDF** → 页面渲染 → 视觉/OCR → 结构恢复 → 风险检测 → 关键区域复核。
**混合 PDF** → 文本层 + 页面图像联合判断。对文本层缺失或明显与视觉内容不一致的区域进行补识别。
**图片** → 视觉识别 → 阅读顺序恢复 → 关键内容复核。
---
## 4. PDF 原生文本恢复规范
### 4.1 不可使用的简化逻辑
禁止仅凭以下单一条件判断标题或段落:
- “字体 > 16 就是标题”;
- “加粗就是标题”;
- “每个 TextBlock 都是一段”;
- “每页只需按 API 返回顺序拼接”。
这些特征只能作为候选信号。
### 4.2 推荐恢复策略
优先获取:
- span 文本、字体、字号、粗体/斜体信息;
- block / line / span 的坐标;
- 文本块边界;
- 页面的阅读方向与列结构。
恢复时综合判断:
- X/Y 坐标连续性;
- 相邻行间距;
- 左边界是否一致;
- 字号相对正文的差异;
- 粗体、全大写、编号模式;
- 前后内容是否形成标题—正文层级;
- 两栏/多栏情况下的列顺序。
目标是恢复“**可读的原文结构**”,而不是臆造原 PDF 的排版源文件。
### 4.3 空格与换行
不要对每个 span 直接 `.strip()` 后再机械连接。
应根据:
- span 间 X 坐标间距;
- 原始文本中的空格;
- 中文连续字符;
- 英文单词边界;
- 标点位置;
- 行尾连字符;
判断是否需要插入空格或换行。
中文正文通常不应在每个 span 之间强行加入空格。
### 4.4 多栏页面
检测同页多个明显的 X 坐标簇。若存在双栏或多栏,应按“栏 → 从上到下”的顺序阅读,而不是简单按照内部对象顺序拼接。
---
## 5. 扫描 PDF 与图片识别规范
### 5.1 OCR/视觉识别不是“最后一句话”
只要页面文字层为空、极少,或疑似乱码,就必须考虑视觉路径。
可使用当前环境中可用的视觉/OCR能力。若存在图像理解工具,应优先直接让模型读取页面图像;若需要程序辅助,可使用 `scripts/pdf_page_probe.py` 渲染指定页面。
### 5.2 图像识别提示要求
识别时应明确要求:
- 读取全部可见文字,而不是只读标题;
- 保持自然阅读顺序;
- 区分标题、正文、列表、表格、脚注、页眉页脚;
- 保留原文标点、大小写、数字、小数点、百分号、货币符号;
- 不猜测被遮挡或不可辨识字符;
- 对模糊位置使用 `[?]` 或 `[无法辨认]`,不要凭常识补全;
- 表格必须按行列关系恢复;
- 对旋转文字、竖排文字、边缘文字单独注意。
### 5.3 图片质量不足时
先判断是否值得预处理:
- 旋转/方向矫正;
- 适度放大;
- 灰度化/对比度增强;
- 局部裁剪;
- 对倾斜页面做纠偏。
不要无限尝试“美化图片”。当原始像素已经不足时,应明确保留不确定性。
---
## 6. 结构恢复规则
输出结构优先级:
`标题 > 段落 > 列表 > 表格 > 引用/注释 > 页眉页脚 > 装饰元素`
### 标题
标题判断需要结合多个信号。建议使用:
- 相对字号;
- 粗体/字重;
- 独立成行;
- 前后留白;
- 编号模式,如 `1.`、`1.1`、`(一)`;
- 与正文的语义关系。
仅在证据充分时才提升为 Markdown 标题;证据不足时保持普通文本。
### 列表
识别:
- `•`、`-`、`*`;
- `1.`、`2.`;
- `a)`、`b)`;
- `(1)`、`(2)`;
- 中文序号。
保留原有编号,不要自动重编号。
### 表格
表格是高风险区域。若能可靠恢复,应输出 Markdown 表格或结构化数据;若列边界不确定,不要凭空移动单元格。
推荐策略:
1. 先识别表头;
2. 判断行列边界;
3. 对合并单元格保留语义;
4. 逐行校验数字;
5. 无法可靠恢复时,退化为“按行转写”,并说明布局可能存在损失。
### 页眉页脚
跨页面重复出现、位置固定、字号较小的文本,可判为候选页眉/页脚。只有在重复性足够明显时才折叠;不要误删正文中的重复句子。
---
## 7. 高风险内容复核
必须重点复核:
- 日期;
- 金额、税率、百分比;
- 电话号码;
- 订单号、合同号、票据号;
- 身份/证件编号;
- 银行账号或其他长数字串;
- 邮箱、URL;
- 型号、版本号、程序代码;
- 表格中的数字字段。
### 复核原则
第一轮:按正常版面识别。
第二轮:针对高风险片段做局部独立复核,优先查看原图对应区域。
第三轮仅在必要时执行:当两次结果冲突,或结果与上下文存在明显矛盾。
不得因为“常识上应该是某个数字”而强行覆盖视觉证据。
### 不确定结果
优先使用:
- `[?]`:单字符不确定;
- `[无法辨认]`:整段无法可靠读取;
- `[候选:A / B]`:存在少量明确候选。
不要把未知字符替换成看似合理的字符。
---
## 8. 输出模式
根据用户需求选择一种主输出模式:
### A. 保真转写
适用于“逐字提取”“完整 OCR”。
- 尽量忠实;
- 分页;
- 不主动摘要;
- 保留可确定的格式信息。
### B. 结构化 Markdown
适用于阅读与后续编辑。
- 页面标题;
- 标题层级;
- 段落;
- 列表;
- 表格;
- 必要时保留页码标记。
### C. 纯文本
适用于复制到其他程序。
- 删除 Markdown 标记;
- 保留自然段与基本换行。
### D. 数据抽取
适用于只要字段、数字或表格。
- 只输出目标信息;
- 不混入长篇 OCR 原文;
- 对字段做二次校验。
### E. 文件输出
用户要求保存时才创建 `.md`、`.txt` 或其他明确格式;文件生成前先完成识别与校验。
---
## 9. 页面级状态与异常处理
每页在内部可标记:
- `OK_NATIVE`:文本层稳定;
- `OK_VISION`:视觉识别稳定;
- `MIXED`:文本层与视觉内容联合恢复;
- `LOW_CONFIDENCE`:存在明显不确定内容;
- `NEEDS_REVIEW`:关键字段发生冲突;
- `EMPTY_PAGE`:确认为空白页;
- `FAILED`:页面无法可靠读取。
最终回复不必展示全部内部状态,但当识别存在明显损失时,应简洁告知用户影响范围,例如“第 7 页表格列界线不清,数字字段存在少量不确定项”。
### 加密/受限 PDF
遇到密码保护、损坏、无法解析或权限受限:
1. 明确说明是哪一类问题;
2. 不伪造提取结果;
3. 如果用户能提供解锁后的文件,再继续处理。
---
## 10. 大文件策略
对于超长 PDF:
1. 先读取页数与页面诊断信息;
2. 只对需要视觉识别的页面进行渲染;
3. 分批处理,不要一次把整本文档全部塞入上下文;
4. 每批完成后记录页码范围;
5. 最终按原页序合并。
默认优先保证准确率,而不是追求一次性处理完所有页面。
---
## 11. 质量控制清单
在提交最终结果前,内部检查:
- [ ] 页数是否与源文件一致;
- [ ] 是否漏掉低文字密度页面;
- [ ] 扫描页是否走视觉/OCR 路径;
- [ ] 多栏页面阅读顺序是否合理;
- [ ] 标题是否存在明显误判;
- [ ] 段落和换行是否自然;
- [ ] 表格是否发生列错位;
- [ ] 高风险数字是否复核;
- [ ] 不确定字符是否明确标记;
- [ ] 是否错误添加了原文没有的内容;
- [ ] 用户要求的是全文、正文、字段还是摘要,是否匹配;
- [ ] 生成文件后是否能正常打开并包含完整内容。
---
## 12. 推荐操作模板
### 图片
> 读取整张图片中的所有可见文字,按自然阅读顺序恢复。保留标题、正文、列表、表格、注释和关键数字。不要猜测模糊字符;不确定处标记 `[?]`。若存在表格,优先恢复行列关系。
### PDF 原生文本页
> 优先使用 PDF 文本层。根据坐标、行距、字号、字重和列结构恢复自然阅读顺序;不要简单按对象顺序拼接,也不要仅凭字号判定标题。
### 扫描 PDF 页
> 将页面视为图像进行完整视觉识别。保持自然阅读顺序,识别标题、段落、列表、表格、脚注和页眉页脚。关键数字与编号进行局部复核。
---
## 13. 资源
- `scripts/pdf_page_probe.py`:PDF 诊断、页面文字统计、页面图像渲染及可选图片提取辅助脚本。
- `README.md`:安装、调用与能力说明。
---
## 14. 设计边界
本 Skill 不承诺“100% OCR 正确”。正确做法是:**能确认的准确输出;不能确认的明确标记;关键内容额外复核;无法恢复的版面诚实说明。**
不要把模型推测、语义补全或常识纠错伪装成源文件原文。使用说明
# 文档视觉文字精炼器 **Document Vision Text Recovery · v2.0.0** 一个面向 PDF、扫描件和图片文字恢复的通用 Skill。它不把所有文件都当成“普通 OCR”,而是先判断页面类型,再选择最合适的提取路径。 ## 主要能力 - 原生 PDF 文本层提取 - 扫描型 PDF 的页面渲染与视觉/OCR 回退 - 混合 PDF 联合恢复 - 中文、英文、数字及常见符号识别 - 标题、段落、列表、表格和页眉页脚的结构恢复 - 多栏阅读顺序处理 - 金额、日期、编号、代码等高风险内容二次复核 - 不确定字符显式标记 - 输出为保真转写、Markdown、纯文本或字段数据 - 超长 PDF 分批处理 - 页面级异常诊断 ## 依赖 ```bash pip install 'pymupdf>=1.24.0' ``` 本 Skill 的 PDF 辅助脚本不依赖外部 OCR 服务。扫描页的真正 OCR/视觉识别由当前运行环境可用的视觉或 OCR 能力完成。 ## PDF 页面诊断 ```bash python scripts/pdf_page_probe.py document.pdf ``` 渲染指定页面: ```bash python scripts/pdf_page_probe.py document.pdf --pages 2,5-7 --render-dir ./rendered --dpi 180 ``` 输出会告诉你每页更接近原生文本、扫描页、混合页还是可疑页,并可生成后续视觉识别所需的 PNG。 ## 设计原则 1. 能从 PDF 文本层可靠提取时,不做多余 OCR。 2. 文本层为空不等于页面没有文字。 3. 不依赖单一字号阈值猜标题。 4. 不通过常识“修正”看不清的原文。
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手