本技能用于本地离线 OCR 与图表结构化识别。默认只处理本机文件,不上传图片,不调用外部 API。
技能目录:skills/ccy-ocr-local/
python3 skills/ccy-ocr-local/scripts/local_ocr.py <image_path> --lang chi_sim+eng
常用参数:
--json:输出内容和元数据--format tsv:输出带坐标/置信度的 TSV--autorotate:自动尝试方向--doc-hint label:标签、票据、短文本图片优先用这个--multi-variant:多预处理候选搜索,慢一些但更稳--mode accurate:更适合追求准确率的单张图片--batch --out-dir :目录批处理并生成 manifest.jsonJSON 输出会包含 avg_conf、low_conf_words、quality_warning 和 suggestions,用于判断是否需要重跑或人工复核。
示例:
python3 skills/ccy-ocr-local/scripts/local_ocr.py image.png --lang chi_sim+eng --autorotate --json
python3 skills/ccy-ocr-local/scripts/local_ocr.py images/ --batch --recursive --out-dir ocr-out --lang chi_sim+eng
python3 skills/ccy-ocr-local/scripts/chart_ocr.py <image_path> --chart-type auto --json
支持 auto | pie | bar | line | table | dashboard。
示例:
python3 skills/ccy-ocr-local/scripts/chart_ocr.py chart.png --chart-type dashboard --json
python3 skills/ccy-ocr-local/scripts/chart_ocr.py chart.png --chart-type bar --extract-numbers --extract-labels --json
python3 skills/ccy-ocr-local/scripts/chart_ocr.py chart.png --chart-type auto --visualize --visualize-output chart_debug.png --json
--visualize 会生成调试标注图:灰框为候选区域,橙/红框为选中图表或 dashboard 子图区域。
pillow pytesseract opencv-python numpychi_sim;英文只需 eng检查语言包:
tesseract --list-langs
如果 tesseract 不在 PATH,可用:
python3 skills/ccy-ocr-local/scripts/local_ocr.py image.png --tesseract-cmd /path/to/tesseract
或设置 TESSERACT_CMD 环境变量。
quality_notes;如果提示低置信,优先查看 --visualize 调试图,并考虑裁剪图表主体或手动指定 --chart-type。--autorotate、--multi-variant、--mode accurate、提高图片分辨率、换 --psm、确认语言包。如果要让这个技能在真实业务图片上越来越准,按下面顺序迭代。不要只凭单张样例调参,先建样本和评测。
把实际会遇到的图片按类型放到固定目录,例如:
skills/ccy-ocr-local/assets/eval/
├── text/ # 普通文档、截图、票据、标签
├── label/ # 短文本标签、产品标签、物流标签
├── chart-bar/ # 柱状图
├── chart-line/ # 折线图
├── chart-pie/ # 饼图
└── dashboard/ # 多图表看板
每张图片旁边放一个同名 .expected.json,记录人工校验后的期望结果。建议字段:
{
"type": "text",
"lang": "chi_sim+eng",
"expected_text": "人工校验后的完整文字",
"important_terms": ["供应商", "数量", "软头镊子"],
"expected_numbers": [123, 45.6]
}
图表样本建议记录:
{
"type": "chart-bar",
"chart_type": "bar",
"title": "月度产量",
"labels": ["1月", "2月", "3月"],
"values": [120, 160, 150]
}
普通 OCR 建议看:
important_terms 是否识别出来avg_conf、low_conf_words图表识别建议看:
bar / line / pie / table / dashboard--visualize 调试图人工抽检普通 OCR 的 JSON 会输出:
avg_conf:平均置信度,低于 55 通常要复核low_conf_words:低置信词数量,越多越不稳quality_warning:低质量原因suggestions:建议重跑参数低质量时优先重跑:
python3 skills/ccy-ocr-local/scripts/local_ocr.py image.png \
--lang chi_sim+eng \
--autorotate \
--multi-variant \
--mode accurate \
--json
标签、票据、短文本图片加:
--doc-hint label
推荐调参顺序:
chi_sim,中英混排用 chi_sim+eng6、7、11、3--multi-variant、--sharpen、提高 --min-edge--autorotate --autorotate-strategy fullDOMAIN_CORRECTIONS--doc-hint、--psm、--mode图表识别优先这样做:
--visualize 确认图表区域是否选对_find_chart_regions / _classify_region修改代码或参数后至少运行:
python3 skills/ccy-ocr-local/scripts/regression.py
python3 skills/ccy-ocr-local/scripts/test_chart_ocr.py
如果增加了真实样本集,建议再补一个专门的 eval 脚本,输出每次修改前后的准确率变化。只有评测变好,才算真正提升准确率。
python3 skills/ccy-ocr-local/scripts/regression.py
python3 skills/ccy-ocr-local/scripts/test_chart_ocr.py
scripts/local_ocr.py:通用离线 OCR CLIscripts/chart_ocr.py:图表识别 CLI 与 ChartOCR APIscripts/regression.py:OCR 样例回归scripts/test_chart_ocr.py:图表识别回归assets/:样例图片OCR-CONFIG.md / ROADMAP-*.md:更细的配置与路线说明,需要时再读from scripts.chart_ocr import ChartOCR
chart_ocr = ChartOCR(lang="chi_sim+eng")
result = chart_ocr.extract_chart_data("chart.png", ["auto"])
print(result)
共 2 个版本