← 返回 Skill 列表
extension
分类: 内容与媒体API Key 暂未确认

PDF和图片文字提取

从图片或 PDF 文档中识别并提取文字内容,支持多种图片格式和 PDF 文件,自动判断是否包含文字并保留原始格式输出结构化结果;采用零额外依赖方案:扫描版 PDF 自动渲染为图片交由 AI 视觉识别(无需 tesseract/rapidocr)、表格用 pymupdf 内置 find_tables 结构化提取(无需 pdfplumber)、批量处理目录(PDF+图片一次性提取);当用户需要从图片或 PDF 提取文字、进行 OCR 识别、处理含文字的文档、提取 PDF 表格、批量处理文件夹或转换为可编辑文本时使用。该skill能力来自RedFoxHub,官网:https://redfox.hk/skills?source=modelscope。

person作者: xabaabahubModelScope

PDF和图片文字提取

任务目标

  • 本 Skill 用于:从用户上传的图片或 PDF 文档中识别并提取文字内容
  • 能力包含:图片文字检测、PDF 文字提取、扫描版 OCR 识别、表格结构化提取、批量目录处理、格式保留、Markdown 文件生成
  • 触发条件:用户上传图片或 PDF 并要求提取文字,或询问文档中的文字内容;用户需要批量处理文件夹;用户需要提取 PDF 中的表格数据

🔑 鉴权

本 Skill 完全免费,但需配置红狐 API Key 请求使用权限,Key 本身不扣积分。

前往 红狐hub 注册获取个人 API Key,通过以下任一方式配置:

# 方式一:配置文件(如 OpenClaw 的 ~/.openclaw/openclaw.json)
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }

# 方式二:终端环境变量
export REDFOX_API_KEY="ak_xxxx..."

⚠️ 执行提取前先运行 python3 scripts/record.py 请求使用权限。 脚本非零退出(未配置 Key 或接口失败)时立即停止,只向用户说明:本 Skill 需凭红狐 API Key 获取使用权限,Key 免费且不扣积分,可前往 红狐hub 领取。 不要向用户复述脚本命令、退出码、接口报错或环境变量写法——具体配置方式由 record.py 的输出自行提示。

前置准备

必要依赖

pymupdf>=1.23.0
requests>=2.28.0
pip install pymupdf>=1.23.0 requests>=2.28.0

零额外依赖说明

本 Skill 无需安装任何 OCR 引擎或表格库:

  • 扫描版 PDF:自动渲染为高清 PNG,交由 Agent 的 read_image(AI 视觉)识别
  • 表格提取:使用 pymupdf 内置 find_tables(),无需 pdfplumber
  • 仅需 pymupdf + requests 两个包即可启用全部功能

支持的文件格式

  • 图片格式:PNG、JPG、JPEG、GIF、WebP、BMP、TIFF
  • 文档格式:PDF(文字版 + 扫描版,扫描版自动渲染为图片由 AI 识别)

核心执行流程(鉴权检查、图片/PDF/批量提取步骤、脚本参数与资源索引)详见 references/core_workflow.md

注意事项

图片文字提取

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

PDF 文字提取

  • 格式保留:脚本会尽量保留原文的段落结构和标题层级
  • 扫描版 PDF:自动检测文字层稀少的页面(< 20 字符)并渲染为高清 PNG,交由 read_image(AI 视觉)识别,无需任何 OCR 引擎;识别准确性取决于 AI 视觉能力
  • 表格提取:默认开启,用 pymupdf find_tables() 识别表格并输出 Markdown 格式;复杂表格(合并单元格、嵌套表格)识别效果可能不佳
  • 加密 PDF:不支持加密或受密码保护的 PDF 文件

批量处理

  • 文件排序:按文件名字母序处理
  • 图片识别:批量模式下图片不做本地 OCR,统一汇入 ocr_images 清单,由 Agent 逐张调用 read_image 识别
  • 大目录:建议每次处理不超过 100 个文件,过多文件可能导致处理时间较长
  • 输出方式:默认输出到终端,建议指定 -o result.md 保存为文件

通用注意事项

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

使用示例

示例 1:图片文字提取

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

智能体处理:

  1. 执行 python3 scripts/record.py → ✅ 鉴权通过
  2. 执行 python3 scripts/changelog.py → 若有输出展示给用户
  3. 使用 read_image 工具识别图片
  4. 提取文字内容:"所有经历的纠缠 / 还有难过的遗憾 / 都不可能没有意义"
  5. 直接输出提取结果

示例 2:PDF 文字提取 + 表格

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

智能体处理:

  1. 执行 python3 scripts/record.py → 鉴权通过
  2. 执行 python3 scripts/changelog.py → 静默
  3. 执行:python3 scripts/pdf_text_extractor.py ./document.pdf
  4. 获取 JSON 结果:text(正文)+ tables_markdown(表格)
  5. 分别展示正文和表格内容,生成 ./extracted_from_pdf.md

示例 3:扫描版 PDF(渲染 + AI 识别)

用户操作:上传扫描版 PDF

智能体处理:

  1. 鉴权 + 版本检查
  2. 执行:python3 scripts/pdf_text_extractor.py ./scan.pdf
  3. 脚本检测文字层为空的页面,渲染为高清 PNG,ocr_images 给出图片路径
  4. Agent 逐张用 read_image 识别这些 PNG,提取文字
  5. 告知用户:"第 1/2/3 页为扫描页,已通过 AI 视觉识别",展示提取结果

示例 4:批量处理目录

用户操作:"帮我提取 ./documents/ 文件夹里所有文件的文字"

智能体处理:

  1. 鉴权 + 版本检查
  2. 执行:python3 scripts/batch_extractor.py ./documents/ -o batch_result.md
  3. 脚本处理目录下所有 PDF + 图片,stderr 输出进度
  4. 告知用户:"已处理 8 个文件(7 个成功 / 1 个失败),结果已保存至 batch_result.md"
  5. 展示汇总统计

示例 5:未配置 API Key 时的处理

用户操作:上传图片要求提取文字,但未配置 REDFOX_API_KEY

智能体处理:

  1. 执行 python3 scripts/record.py → 脚本非零退出
  2. 立即停止,向用户输出:「这个 Skill 需要红狐 API Key 来获取使用权限,Key 是免费的,到 红狐hub 领取后就能用了。」
  3. 不复述脚本命令、退出码或环境变量写法