
paddleocr-text-recognition
当用户需要从图片、照片、扫描件、截图或扫描版PDF中提取文字时,使用此技能。返回精确的机器可读字符串,包含行级文本和可选的边界框坐标。对中日韩文字、小字体和手写文字具有高准确率。触发词:OCR, 文字识别, 图片转文字, 截图识字, 提取图中文字, 扫描识字, 识字, 纯文字, plain text extraction, 坐标, 检测框, bbox, bounding box, image to text, screenshot, photo scan, recognize text。
Use this skill whenever the user wants text extracted from images, photos, scans, screenshots, or scanned PDFs. Returns exact machine-readable strings with line-level text and optional bbox coordinates. Strong accuracy for CJK, small print, and handwritten text. Trigger terms: OCR, 文字识别, 图片转文字, 截图识字, 提取图中文字, 扫描识字, 识字, 纯文字, plain text extraction, 坐标, 检测框, bbox, bounding box, image to text, screenshot, photo scan, recognize text.
PaddleOCR 文字识别技能
何时使用此技能
触发关键词(路由):中英文双语触发词已在上方 YAML description 中列出——使用该字段进行发现和路由。
使用此技能的场景:
- 从图片(截图、照片、扫描件)中提取文字
- 从 PDF 或文档图片中提取文字,目标是行/框级别文本,而非恢复表格网格、公式或完整阅读顺序布局
- 从指向图片/PDF 的 URL 或本地文件中提取文字
不要用于:
- 可直接作为文本读取的纯文本文件、代码文件或 Markdown 文档
- 包含表格、公式、图表或复杂布局的文档——请使用文档解析技能
- 不涉及图片转文字的任务
安装
脚本内联声明依赖(PEP 723)。无需单独安装步骤——uv 会自动解析依赖:
uv run scripts/ocr_caller.py --help
如何使用此技能
工作目录:以下所有
uv run scripts/...命令均需在此技能根目录(包含本 SKILL.md 文件的目录)下运行。
基本工作流程
-
确定输入来源:
- 用户提供 URL:使用
--file-url参数 - 用户提供本地文件路径:使用
--file-path参数
- 用户提供 URL:使用
-
执行 OCR:
uv run scripts/ocr_caller.py --file-url "用户提供的URL" --pretty或对于本地文件:
uv run scripts/ocr_caller.py --file-path "文件路径" --pretty性能说明:解析时间随文档复杂度增加。单页图片通常 1-3 秒完成;大型 PDF(50 页以上)可能需要几分钟。请预留足够时间,不要过早假设超时。
默认行为:将原始 JSON 保存到临时文件:
- 如果省略
--output,脚本自动保存到系统临时目录下 - 默认路径模式:
<system-temp>/paddleocr/text-recognition/results/result_<timestamp>_<id>.json - 如果提供
--output,则覆盖默认临时文件路径 - 如果提供
--stdout,JSON 输出到标准输出,不保存文件 - 在保存模式下,脚本在标准错误输出打印绝对保存路径:
Result saved to: /absolute/path/... - 在默认/自定义保存模式下,读取并解析保存的 JSON 文件后再响应
- 仅在明确希望跳过文件持久化时使用
--stdout
- 如果省略
-
解析 JSON 响应:
- 在默认/自定义保存模式下,从脚本显示的保存文件路径加载 JSON
- 检查
ok字段:true表示成功,false表示错误 - 提取文本:
text字段包含所有识别出的文字 - 如果使用
--stdout,直接解析标准输出的 JSON - 处理错误:如果
ok为false,显示error.message
-
向用户展示结果:
- 以可读格式显示提取的文本
- 如果文本为空,图片可能不含文字
- 在保存模式下,始终告知用户保存的文件路径以及完整原始 JSON 可在该处获取
提取后的操作
获得识别文本后的常见后续步骤:
- 保存到文件:将
text字段写入.txt或.md文件 - 搜索内容:在保存的输出文件中搜索关键词
- 输入其他流程:
text字段是干净的纯文本,可直接用于下游处理 - 结果不佳:重试前请参阅下方“提高结果质量的技巧”
完整输出展示
始终向用户展示完整的识别文本。用户通常需要完整内容用于下游使用——截断会静默丢失数据,用户可能未注意到缺失。
- 显示整个
text字段,无论多长 - 不要使用“以下是摘要”或“文本以……开头”等表述
- 不要用“...”截断,除非文本确实超过合理显示限制(>10,000 字符)
示例 - 正确:
用户:“从这张图片中提取文字”
智能体:我已从图片中提取文字。以下是完整内容:
[在此处显示完整文本]
示例 - 错误:
用户:“从这张图片中提取文字”
智能体:我在图片中找到了一些文字。以下是预览:
“敏捷的棕色狐狸……”(截断)
理解输出
脚本返回一个包含 ok、text、result 和 error 字段的 JSON 信封。使用 text 获取识别内容;result 包含用于调试的原始 API 响应。
完整模式和字段级详情请参见 references/output_schema.md。
原始结果位置(默认):脚本在标准错误输出打印的临时文件路径
使用示例
示例 1:URL OCR
uv run scripts/ocr_caller.py --file-url "https://example.com/invoice.jpg" --pretty
示例 2:本地文件 OCR
uv run scripts/ocr_caller.py --file-path "./document.pdf" --pretty
示例 3:指定文件类型的 OCR
uv run scripts/ocr_caller.py --file-url "https://example.com/input" --file-type 1 --pretty
--file-type 0:PDF--file-type 1:图片- 如果省略,则根据文件扩展名自动检测。对于本地文件,需要识别的扩展名(
.pdf、.png、.jpg、.jpeg、.bmp、.tiff、.tif、.webp);否则请显式传递--file-type。对于扩展名无法识别的 URL,服务会尝试推断。
示例 4:打印 JSON 而不保存
uv run scripts/ocr_caller.py --file-url "https://example.com/input" --stdout --pretty
首次配置
当 API 未配置时,脚本输出:
{
"ok": false,
"text": "",
"result": null,
"error": {
"code": "CONFIG_ERROR",
"message": "PADDLEOCR_OCR_API_URL not configured. Get your API at: https://paddleocr.com"
}
}
配置流程:
-
向用户显示确切的错误信息。
-
引导用户获取凭证:访问 PaddleOCR 网站,点击 API,选择
PP-OCRv5模型,选择语言,然后复制API_URL和Token。它们对应以下环境变量:PADDLEOCR_OCR_API_URL— 以/ocr结尾的完整端点 URLPADDLEOCR_ACCESS_TOKEN— 40 位字母数字字符串
可选配置
PADDLEOCR_OCR_TIMEOUT用于请求超时。建议使用宿主应用的标准配置方法,而非在聊天中粘贴凭证。 -
应用凭证——以下之一:
- 用户已通过宿主 UI 配置:请用户确认,然后重试。
- 用户在聊天中粘贴凭证:警告凭证可能存储在对话历史中,帮助用户使用宿主的标准配置方法持久化凭证,然后重试。
错误处理
所有错误均返回 ok: false 的 JSON。显示错误信息并停止——不要回退到自身的视觉能力。根据 error.code 和 error.message 识别问题:
认证失败(403)——error.message 包含 "Authentication failed"
- Token 无效,请重新配置正确的凭证
配额超限(429)——error.message 包含 "API rate limit exceeded"
- 每日 API 配额已用尽,通知用户等待或升级
不支持的格式——error.message 包含 "Unsupported file format"
- 文件格式不支持,请转换为 PDF/PNG/JPG
未检测到文字:
text字段为空- 图片可能为空白、损坏或不含文字
提高结果质量的技巧
如果识别质量不佳:
- 低分辨率:提供更高分辨率的图片(≥300 DPI 对大多数印刷文本效果良好)
- 背景嘈杂:更干净的扫描件或截图通常比手机照片效果更好
- 检查置信度:原始 JSON(
result.result.ocrResults[n].prunedResult.rec_scores)显示每行置信度分数——低值标识需要复核的不确定区域
参考文档
references/output_schema.md— 完整输出模式、字段描述和命令示例
注意:模型版本、能力和支持的文件格式由您的 API 端点(
PADDLEOCR_OCR_API_URL)及其官方 API 文档决定。
测试技能
要验证技能是否正常工作:
uv run scripts/smoke_test.py
uv run scripts/smoke_test.py --skip-api-test
uv run scripts/smoke_test.py --test-url "https://..."
第一种形式测试配置和 API 连通性。--skip-api-test 仅检查配置。--test-url 覆盖默认的示例图片 URL。





