本技能采用 三层架构 + 引擎专项优化 极大提升OCR准确度:
| 层级 | 方法 | 准确度提升 | 成本 |
|---|---|---|---|
| ------ | ------ | ----------- | ------ |
| L1 图像预处理 | 通用/英文/手写体三种模式 | +10-30% | 零 |
| L2 多引擎OCR | 5大引擎智能选择 | +15-35% | 免费 |
| L3 LLM纠错 | 视觉模型对照原图修正 | +20-40% | API调用 |
最终准确度:印刷体中文95%+,印刷体英文97%+,手写体中文85%+,手写体英文90%+
| 引擎 | 安装方式 | 适用场景 | 模型 |
|---|---|---|---|
| ------ | --------- | --------- | ------ |
| RapidOCR(PP-OCRv3) | pip install rapidocr-onnxruntime | 中英文通用,最快 | 自动下载 |
| EasyOCR | pip install easyocr | 80+语言,英文手写体最强 | 自动下载 |
| PP-OCRv4 ONNX | 已集成 | 中英文通用(v4改进) | 首次使用自动下载(~17MB) |
| PP-OCRv5 ONNX | 已集成 | 中英日+手写体专项优化 | 首次使用自动下载(~21MB) |
| en_PP-OCRv3 ONNX | 已集成 | 英文印刷体专项 | 首次使用自动下载(~9MB) |
> 引擎的 Python 包通过 pip 安装,模型文件在首次调用对应引擎时自动从 HuggingFace 镜像 (hf-mirror.com) 下载到 ~/.cache/workbuddy/ocr-pro/models/。RapidOCR 默认模型由其包自行管理。
pip install PyMuPDF) - PDF处理pip install opencv-python-headless) - 图像预处理pip install Pillow) - 图像预处理VENV_PATH: C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro
PYTHON: C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\python.exe
SCRIPTS_DIR: C:\Users\Administrator\.workbuddy\skills\ocr-pro\scripts
# 创建venv(如不存在)
C:\Users\Administrator\.workbuddy\binaries\python\versions\3.13.12\python.exe -m venv C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro
# 核心依赖
C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\pip.exe install rapidocr-onnxruntime PyMuPDF opencv-python-headless Pillow numpy
# 英文/手写体强化(可选但强烈推荐)
C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\pip.exe install easyocr modelscope
输入(PDF/图片)
↓
[检测类型] → PDF? → [提取嵌入文字] → 有文字? → 直接输出
↓ ↓
↓ 无文字? → [PDF转图片]
↓ ↓
图片? ────────────→ [图像预处理] ← 根据场景选择模式
↓ ├─ standard (通用)
↓ ├─ english (英文印刷)
↓ └─ handwriting (手写体)
[多引擎OCR] ← 智能选择引擎
├─ RapidOCR (中英通用,最快)
├─ RapidOCR-EN (英文专用模型)
├─ PP-OCRv5 (中英日+手写体)
├─ EasyOCR (80+语言,手写体强)
└─ 腾讯OCR (MCP,表格强)
↓
[合并结果] ← 置信度加权
↓
[LLM纠错] ← 对照原图 + 专项prompt
↓
输出(文字/JSON)
如果输入是PDF文件:
pdf_to_images.py --info 检测PDF信息pdf_to_images.py --text 提取嵌入文字pdf_to_images.py 转为300DPI图片# 检测PDF信息
{{PYTHON}} {{SCRIPTS_DIR}}/pdf_to_images.py --input "<pdf_path>" --info
# 提取嵌入文字(digital PDF)
{{PYTHON}} {{SCRIPTS_DIR}}/pdf_to_images.py --input "<pdf_path>" --text
# 转为图片(scanned PDF)
{{PYTHON}} {{SCRIPTS_DIR}}/pdf_to_images.py --input "<pdf_path>" --output "<output_dir>" --dpi 300
根据场景选择预处理模式:
# 通用预处理(中英混合)
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "<image_path>" --output "<output_dir>" --dpi 300
# 英文印刷体专项预处理(更强锐化+字间距保留)
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "<image_path>" --output "<output_dir>" --dpi 300 --mode english
# 手写体专项预处理(断笔修复+淡墨增强)
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "<image_path>" --output "<output_dir>" --dpi 300 --mode handwriting
# 加二值化(极低质量文档)
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "<image_path>" --output "<output_dir>" --dpi 300 --binarize
预处理模式对比:
| 模式 | 去噪 | 对比度 | 锐化 | 特殊处理 |
|---|---|---|---|---|
| ------ | ------ | ------- | ------ | --------- |
| standard | 自适应 | CLAHE 2.0 | 轻度(0.3) | — |
| english | 自适应 | CLAHE 2.5 | 强力(0.5) | 英文字体边缘强化 |
| handwriting | 轻柔 | CLAHE 3.0 | 轻度(0.3) | 形态学断笔修复+淡墨增强 |
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --list-engines
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine rapidocr --detail
# 英文模式
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine easyocr --lang en --detail
# 中英双语模式
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine easyocr --lang en,ch_sim --detail
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine rapidocr_v5 --detail
# 英文印刷体场景 → 自动选英文专用引擎
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine english --detail
# 手写体场景 → 自动选EasyOCR+V5
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine handwriting --detail
# 中英混合场景 → 自动选V5+RapidOCR
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine mixed --detail
# 全引擎运行(最高准确度)
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "<image_path>" --engine all --detail
调用 mcp__tencent-docs__ocr.extract 工具识别图片中的文字
参数: image_url 或 image_path
对于手写体或低质量图片,直接用视觉语言模型识别效果最好:
这是准确度提升最大的步骤!
# 中文印刷体
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode standard
# 中文手写体
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode handwriting
# 英文印刷体
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode english
# 英文手写体
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode english_handwriting
# 表格
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode table
# 输出到文件
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "<json>" --image "<img>" --mode english --output "<txt>"
Read 工具读取原始图片(视觉模型可看到图片内容)根据用户需求输出:
用户: 识别这个英文PDF
→ Step 1: 检测PDF → 扫描件
→ Step 2: 预处理 --mode english
→ Step 3: --engine english(自动选英文专用模型)
→ Step 4: --mode english 纠错
→ Step 5: 输出
用户: 识别学生英语手写
→ Step 2: 预处理 --mode handwriting
→ Step 3: --engine handwriting(EasyOCR + PP-OCRv5)
→ Step 4: --mode english_handwriting 纠错
→ Step 5: 输出
用户: 帮我识别这个PDF里的文字
→ Step 1: 检测PDF → 扫描件
→ Step 2: 预处理 standard
→ Step 3: --engine rapidocr
→ Step 4: --mode standard 纠错
→ Step 5: 输出
用户: 必须100%准确
→ Step 2: 预处理(standard + binarize两版)
→ Step 3: --engine all(全部引擎)
→ Step 4: LLM纠错(参考多引擎结果+原图)
→ Step 5: 输出
| 场景 | 推荐引擎 | 预处理模式 | 纠错模式 | 原因 |
|---|---|---|---|---|
| ------ | --------- | ----------- | --------- | ------ |
| 英文印刷PDF | english | english | english | 英文专用模型+强锐化 |
| 英文手写作业 | handwriting | handwriting | english_handwriting | EasyOCR手写体强+断笔修复 |
| 中文印刷PDF | PyMuPDF提取 | — | — | 数字PDF无需OCR |
| 扫描版中文 | rapidocr | standard | standard | 本地免费+纠错 |
| 中英混合 | mixed | standard | standard | V5+RapidOCR |
| 低质量扫描件 | all | standard+binarize | standard | 多引擎+预处理 |
| 表格 | 腾讯OCR | standard | table | 表格结构保持好 |
~/.workbuddy/skills/ocr-pro/ # Skill 包(<100KB,不含模型)
├── SKILL.md # 技能定义和指令
├── scripts/
│ ├── preprocess.py # 图像预处理(3种模式)
│ ├── pdf_to_images.py # PDF处理
│ ├── ocr_pipeline.py # OCR流水线(5引擎+智能选择+合并)
│ ├── format_correction.py # LLM纠错prompt生成器
│ └── model_downloader.py # 模型自动下载(首次运行触发)
└── references/
└── engine_comparison.md # 引擎对比参考
~/.cache/workbuddy/ocr-pro/models/ # 模型缓存(首次使用自动下载,~60MB)
├── PP-OCRv3/ # en_PP-OCRv3_rec (~9MB)
├── PP-OCRv4/ # v4 det+rec (~17MB)
└── PP-OCRv5/ # v5 det+rec+dict (~21MB)
在使用本技能的bash命令时,以下变量需替换为实际路径:
{{PYTHON}} → C:\Users\Administrator\.workbuddy\binaries\python\envs\ocr-pro\Scripts\python.exe{{SCRIPTS_DIR}} → C:\Users\Administrator\.workbuddy\skills\ocr-pro\scripts# === 英文印刷体 ===
# 1. 英文专项预处理
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "input.png" --output "preprocessed/" --dpi 300 --mode english
# 2. 英文引擎识别
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "preprocessed/input_preprocessed.png" --engine english --detail
# 3. 英文纠错
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "ocr_output.json" --image "input.png" --mode english
# === 英文手写体 ===
# 1. 手写体预处理
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "input.png" --output "preprocessed/" --dpi 300 --mode handwriting
# 2. 手写体引擎识别
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "preprocessed/input_preprocessed.png" --engine handwriting --detail
# 3. 英文手写体纠错
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "ocr_output.json" --image "input.png" --mode english_handwriting
# === 通用(中文/混合)===
# 1. 标准预处理
{{PYTHON}} {{SCRIPTS_DIR}}/preprocess.py --input "input.png" --output "preprocessed/" --dpi 300
# 2. 标准引擎识别
{{PYTHON}} {{SCRIPTS_DIR}}/ocr_pipeline.py --input "preprocessed/input_preprocessed.png" --engine rapidocr --detail
# 3. 标准纠错
{{PYTHON}} {{SCRIPTS_DIR}}/format_correction.py --ocr-result "ocr_output.json" --image "input.png" --mode standard
共 1 个版本