P
PDF和图片文字提取
作者:鹿Sir办公效率v1
从 PDF、扫描文档和图片中可靠恢复可读文字与版面结构。自动区分原生文本 PDF、扫描型 PDF 与混合型 PDF,优先解析文本层,低文字密度或扫描页自动切换视觉识别;支持分页、段落、标题、列表、表格、页眉页脚、关键数字复核与结果校验,可输出原文转写、结构化 Markdown、纯文本或文件。当用户提到 PDF 提取文字、扫描件识别、图片转文字、OCR、PDF 转 Markdown、票据/合同/论文文字提取等时触发。
下载量
405
点赞
98
价格
免费
技能文档
--- name: pdf-tupianwenzitiqu title: PDF和图片文字提取 description: 从 PDF、扫描文档和图片中可靠恢复可读文字与版面结构。自动区分原生文本 PDF、扫描型 PDF 与混合型 PDF,优先解析文本层,低文字密度或扫描页自动切换视觉识别;支持分页、段落、标题、列表、表格、页眉页脚、关键数字复核与结果校验,可输出原文转写、结构化 Markdown、纯文本或文件。当用户提到 PDF 提取文字、扫描件识别、图片转文字、OCR、PDF 转 Markdown、票据/合同/论文文字提取等时触发。 category: 办公效率 --- # 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 正确”。正确做法是:**能确认的准确输出;不能确认的明确标记;关键内容额外复核;无法恢复的版面诚实说明。** 不要把模型推测、语义补全或常识纠错伪装成源文件原文。
使用说明
# PDF和图片文字提取 从 PDF、扫描件和图片中保真恢复文字与版面结构:先判断文档类型,再选择最优提取路径。 ## 能力 - 原生 PDF 直接提取文本层;扫描页自动切换视觉/OCR 识别 - 恢复标题、段落、列表、表格、页眉页脚与多栏阅读顺序 - 金额、日期、编号等关键数字二次复核,不确定字符显式标记 - 输出保真转写、结构化 Markdown、纯文本或保存为文件 - 超长 PDF 分批处理与页面级异常诊断 ## 快速开始 ```bash python3 scripts/pdf_page_probe.py 文件.pdf # 页面级诊断(页数/文本密度/类型判定) ``` 对助手直接说需求即可,例如: - 「提取这份 PDF 的文字,保存成 Markdown」 - 「识别这张截图里的表格」 - 「只提取发票里的金额和编号」
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手