mcpField
C
code-ocr

code-ocr

github.com/mhliulgy文档处理38 次安装
代码仓库

关于 code-ocr

code-ocr 是一款将代码截图转换为文本文件的技能,适用于需要从图片提取代码的人。它通过百度 OCR 的位置信息重构行并估算缩进,还支持重新调整缩进参数和交叉校验结果。

主要功能

  1. 01识别代码截图并导出文本
  2. 02根据字符位置重构行与缩进
  3. 03保存并加载 OCR 中间 JSON
  4. 04调整平均字符宽度参数
  5. 05提示对 OCR 结果进行视觉校验

适用场景

  1. 01从截图提取代码文本
  2. 02调整识别结果的缩进效果
  3. 03复用 OCR 结果而不重复调用接口
  4. 04校对代码中的相似字符与符号

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mhliulgy/my-skills --skill code-ocr

安装后在 Claude Code 中输入/code-ocr确认已加载。

附带文件scripts/code_ocr.py

详细介绍

来自项目 README

Code OCR

将代码截图转换为文本文件,使用百度 OCR 高精度含位置版 API,保持原始缩进。

环境配置

在使用前需要配置百度 API 密钥(系统环境变量),默认用户已经配置完成:

# Windows
setx BAIDU_API_KEY "your_api_key"
setx BAIDU_SECRET_KEY "your_secret_key"

或者在当前终端设置:

# Windows (当前终端)
set BAIDU_API_KEY=your_api_key
set BAIDU_SECRET_KEY=your_secret_key

使用方法

基本用法
# 保存 OCR 中间结果(避免重复调用 API)
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" <图片路径> --save-json <json文件路径>

# 从 JSON 加载结果,多次调整 ratio 参数实验
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" <json文件> --load-json <json文件路径> --ratio <值>

# 仅识别图片(不推荐)
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" <图片路径> [输出目录]
参数说明
参数说明
图片路径可选,截图文件的路径(支持 PNG、JPG、BMP 等格式),或 JSON 文件路径
输出目录可选,默认保存到图片所在目录
--ratio / -r可选,平均字符宽度的缩放倍率,用于微调缩进计算。默认 0.955
--save-json FILE / -s FILE可选,OCR 成功后保存中间结果到 JSON 文件
--load-json FILE / -l FILE可选,从 JSON 文件加载 OCR 结果,跳过 OCR 步骤
使用示例
# 1. 首次运行:OCR 识别并保存中间结果
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" screenshot.png -s screenshot.json

# 2. 后续实验:加载 JSON(使用 -l 参数),多次调整 ratio 参数
# 只需指定 -l JSON文件路径 和 --ratio 值,无需其他参数
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.96
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.955
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.95

# 3. 简写形式
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json -r 0.955

提示:首次 OCR 识别后会生成 JSON 文件,如需调整缩进效果,请使用 -l 参数加载该 JSON 文件重新运行。

输出文件
  • 文件名格式:{原文件名}_{时间戳}_{ratio}.txt
  • 例如:screenshot_20260220_143052_0.955.txt
  • 编码:UTF-8
AI 工具需要给出的提示

重要:当 AI 工具应该主动给出基于 JSON 文件重新运行的命令,例如:

# 使用 -l 参数加载 JSON 文件,调整 ratio 参数
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.96
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.955
python "C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py" -l screenshot.json --ratio 0.95

并向用户解释不同 ratio 值的效果差异,帮助用户选择最佳的缩进参数。

工作原理

  1. API 调用:使用百度 OCR "高精度含位置版"(accurate)接口
  2. 位置解析:利用返回的位置信息(location)计算每个字符的坐标
  3. 行重构:根据字符的 top 坐标分组,识别出所有行
  4. 缩进保持:根据每行第一个字符的 left 坐标计算缩进空格数

交叉验证(模型自校验)

当 OCR 结果输出后,AI 模型应主动使用自身的多模态能力对原图进行"视觉 OCR",并与百度 OCR 的输出结果进行交叉验证。

验证流程
  1. 读取原图:AI 模型直接查看用户提供的代码截图
  2. 视觉识别:利用模型的视觉能力识别图片中的代码文本
  3. 对比校对:将视觉识别结果与百度 OCR 输出进行对比
  4. 修正错误:发现差异时,以视觉识别结果为准进行修正
常见需要校验的内容
校验项说明示例
相似字符O vs 0,I vs l vs 1,S vs 5list 被误识别为 1ist
符号混淆' vs ''," vs "",-> vs →don't 被误识别为 don''t
特殊符号@, #, $, %, &, |, \, /@staticmethod 中的 @
缩进对齐空格与制表符的混合使用Python 代码的缩进层级
注释符号//, /*, */, #, <!--注释起始和结束位置
括号匹配(), {}, [], <>嵌套括号的完整性
符号遗漏代码行末的分号、逗号等return x 被误识别为 return x;
中英符号英文逗号 , vs 中文逗号 ,print("Hello, World") 被误识别为 print("Hello,World")

灵活校验:根据代码语言和上下文,判断代码语言,并根据该语言语法规则进行更有针对性的校验。

校对后输出格式
=== 百度 OCR 原始结果 ===
[原始识别文本]

=== 交叉验证修正 ===
- 第 X 行: "原始错误" → "修正后"
- 第 Y 行: "原始错误" → "修正后"

=== 最终修正结果 ===
[校对后的最终文本]
使用建议
  • 对于关键代码(如密钥、配置、正则表达式),必须进行交叉验证
  • 当 OCR 结果中存在明显语法错误时,优先信任模型的视觉识别
  • 若图片模糊或字体特殊,可提示用户提供更清晰的截图

脚本位置

脚本路径:C:\Users\12556\.claude\skills\code-ocr\scripts\code_ocr.py

评论

支持 Markdown