PDF和图片文字提取

👤 to the moon(红狐数据) 📦 v1.0.10 ⭐ 4.5 ⬇️ 84.8K 下载
📄 办公效率 免费

📖 技能介绍


name: pdf-image-text-extractor slug: pdf-image-text-extractor version: 1.0.9 displayName: PDF和图片文字提取 description: 从图片或 PDF 文档中识别并提取文字内容,支持多种图片格式和 PDF 文件,自动判断是否包含文字并保留原始格式输出结构化结果;当用户需要从图片或 PDF 提取文字、进行 OCR 识别、处理含文字的文档或转换为可编辑文本时使用。该skill能力来自RedFoxHub,官网:https://redfox.hk/skills。 dependency: python: - pymupdf>=1.23.0


PDF和图片文字提取

任务目标

  • 本 Skill 用于:从用户上传的图片或 PDF 文档中识别并提取文字内容
  • 能力包含:图片文字检测、PDF 文字提取、格式保留、结构化输出、Markdown 文件生成
  • 触发条件:用户上传图片或 PDF 并要求提取文字,或询问文档中的文字内容

前置准备

依赖说明

脚本所需的依赖包及版本:

pymupdf>=1.23.0

安装命令:

pip install pymupdf>=1.23.0

支持的文件格式

  • 图片格式:PNG、JPG、JPEG、GIF、WebP、BMP 等常见格式
  • 文档格式:PDF(支持扫描版和文字版)

操作步骤

标准流程

图片文字提取流程

  1. 接收图片
  2. 确认用户已上传图片文件
  3. 获取图片的访问 URL

  4. 识别图片内容(第一轮:全局识别)

  5. 使用 read_image 工具识别图片内容
  6. 在 prompt 中明确要求识别所有文字内容,包括标题、正文、注释、水印等
  7. 对数字字符需特别注意视觉形状特征(封闭圆圈数、开口方向、弧线走向),确保 6/8/9/0/3 等易混淆数字准确识别

  8. 判断文字存在性

  9. 如果检测到文字:进入步骤 4
  10. 如果未检测到文字:告知用户"图片中未包含可提取的文字",任务结束

  11. 提取并整理文字

  12. 提取图片中的所有文字内容
  13. 保持原有的结构和排版
  14. 整理为易读的格式

  15. 数字二次聚焦校验(静默执行,不展示给用户)

  16. ⚠️ 重要:整个校验过程(包括形状描述、对比表格、校验轮次等)必须静默执行,禁止在对话输出中展示任何校验过程,只向用户展示最终确认的提取结果
  17. 对第一轮提取结果中的所有数字串(手机号、订单号、金额、日期等),执行二次聚焦识别:
  18. 策略 A:局部放大验证
    • 再次使用 read_image,但这次在 prompt 中只要求识别特定数字串区域
    • prompt 模板:「请只关注图片中的数字串 [上下文描述],逐位描述每个数字字符的视觉形状(有几个封闭圆圈、开口方向、弧线走向),然后给出最终判断结果」
  19. 策略 B:交叉验证
    • 将第一轮的形状描述与第二轮的独立判断进行对比
    • 如果两轮结果一致 → 确认为最终结果
    • 如果两轮结果不一致 → 标注 [待确认:第一轮识别为X,第二轮识别为Y]
  20. 易混淆数字对速查表: | 数字 | 关键视觉特征 | |------|-------------| | 8 | 上下两个封闭圆圈,像雪人/沙漏 | | 6 | 仅下方一个封闭圆圈,顶部向左弯弧 | | 9 | 仅上方一个封闭圆圈,底部向下竖线 | | 0 | 完整封闭椭圆,无开口 | | 3 | 右侧开口,两个弧形朝右 | | 5 | 顶部横线+左侧竖线+下方圆弧 | | S | 类似5但上下对称,无横线 | | O | 比0更圆的封闭图形 |

PDF 文字提取流程

  1. 接收 PDF 文件
  2. 确认用户已上传 PDF 文件
  3. 获取 PDF 文件的本地路径

  4. 调用脚本提取文字

  5. 执行命令:python scripts/pdf_text_extractor.py <pdf_file_path>
  6. 脚本会自动提取所有页面的文本
  7. 尽量保留原文的段落结构和标题层级

  8. 处理提取结果

  9. 如果提取成功:进入步骤 4
  10. 如果提取失败:告知用户错误信息,任务结束

  11. 格式化输出

  12. 脚本返回的文本为 Markdown 格式
  13. 可直接展示或保存为文件

统一输出步骤

  1. 生成输出结果
  2. 根据用户需求生成 Markdown 文件
  3. 包含文件来源、提取状态、文字内容等信息
  4. 使用清晰的标题和结构组织内容

可选分支

  • 当用户仅需查看文字内容:直接输出文字,不生成文件
  • 当用户要求保存结果:生成 .md 文件
  • 当图片/PDF 文字模糊或难以识别:说明情况并提供最佳识别结果
  • 当 PDF 包含扫描图片:提示用户该页面为扫描图片,可能需要 OCR 处理

资源索引

  • 必要脚本:见 scripts/pdf_text_extractor.py
  • 用途:从 PDF 文件中提取文本内容并保留格式
  • 参数:PDF 文件路径
  • 输出:JSON 格式结果,包含提取的文本和元信息

注意事项

图片文字提取

  • 识别准确性:文字识别结果受图片清晰度、字体、背景等因素影响,可能存在误差
  • 「先看形状再判数字」原则:识别数字时必须先描述字符的视觉形状特征(封闭圆圈数、开口方向、弧线走向),再根据特征判断数字,禁止跳过形状描述直接输出数字
  • 关键数字串双重识别:手机号、身份证号、银行卡号、订单号等关键数字串,必须执行两轮识别(全局识别 + 聚焦校验),两轮不一致时标注待确认
  • 校验过程静默执行:数字二次校验的形状描述、对比表格、轮次记录等过程信息严禁展示给用户,只在后台静默执行,最终仅输出确认后的提取结果
  • 存疑标注:对无法100%确认的字符,使用 [?] 标注并给出 2 个备选,如 158****8[?可能为6]624
  • 文字排版:提取时尽量保持原图的文字结构和顺序
  • 多语言支持:支持识别中文、英文等多种语言文字

PDF 文字提取

  • 格式保留:脚本会尽量保留原文的段落结构和标题层级
  • 扫描版 PDF:如果 PDF 是扫描图片,文字可能无法提取,需要告知用户
  • 复杂布局:表格、多栏等复杂布局的提取效果可能不佳
  • 加密 PDF:不支持加密或受密码保护的 PDF 文件

通用注意事项

  • 隐私保护:处理的文件不会被存储,仅在当前会话中使用
  • 文件大小:建议处理小于 50MB 的文件,过大文件可能导致处理缓慢

使用示例

示例 1:图片文字提取

用户操作:上传一张包含文字的图片

智能体处理: 1. 使用 read_image 工具识别图片 2. 提取文字内容:"所有经历的纠缠 / 还有难过的遗憾 / 都不可能没有意义" 3. 直接输出提取结果

示例 2:PDF 文字提取并保存

用户操作:上传 PDF 并要求"提取这个 PDF 的文字"

智能体处理: 1. 确认 PDF 文件路径 2. 执行脚本:python scripts/pdf_text_extractor.py ./document.pdf 3. 获取提取结果,包含 10 页内容 4. 生成 Markdown 文件:./extracted_from_pdf.md

示例 3:处理扫描版 PDF

用户操作:上传扫描版 PDF

智能体处理: 1. 执行脚本提取文字 2. 发现部分页面提取为空 3. 告知用户:"检测到部分页面可能为扫描图片,文字无法直接提取。建议使用 OCR 工具处理。"

🤖 AI 评测

这个 Skill 功能定位明确,文档和脚本都写得很规范,图片和 PDF 文字提取的流程清晰,还特别针对数字识别做了二次校验以提高准确率。不足之处是 PDF 脚本不支持扫描版文档(只能处理文字版 PDF),且部分校验步骤过于复杂可能影响实际效果。总体来说是一个质量不错但功能有一定局限性的文档处理工具。

📊 多维度评分

适应性4.7
规范性4.3
有效性4.5
可靠性4.1
可信度5

📁 包含文件 (4 个)

📄 README.en.md 3.5 KB
📄 README.md 2.9 KB
📄 SKILL.md 7.4 KB
📄 scripts/pdf_text_extractor.py 4.6 KB

🔥 大家都在搜

wps 写作 pdf 苹果