寻求一款支持【识别代码】的 OCR 软件

看视频,看 PDF 文档,里面的代码复制不出来,又没有提供源代码文件,不想跟着敲,咋整?


仔细想想,软件是有实现难度的,比如 l1;:0O 等字符容易混淆。

但是有得天独厚的优势:

  1. 代码图片基本都是纯色背景,不存在变形,没有干扰。
  2. 无需识别缩进,除了少数游标卡尺语言,只要正确识别,都可以一键 format。
1 Like

我个人建议OCR软件,现在有不少OCR软件都是可以自动纠错的,大不了搞完以后让ai给你改改缩进与拼写错误,例如以下提示词:

下面是一段文字识别得到的XXX编程语言的代码,请更正其中所有的拼写与缩进错误,不要检查程序逻辑等非拼写与缩进错误。
<你的代码>

1 Like

ocr配合高精度模型
我平常用quicker,准确率还是挺高的

感觉这应该是字体的问题。好的编程字体应该是有较高的分辨能力的,一般而言经常写代码的人似乎也会更倾向于选择那些分辨能力好的字体。

尝试了一下 Pot 翻译器 配合 Rapid OCR 插件

下面是原文,使用等距更纱黑体

001.png

与原文(左)相比,识别结果(右)错了 3 处(一处是多了个空格,另外两处是少了个 ;

002.png

1 Like

别想了 人都无法分清LlI和i,所以为了正确率还是手动敲吧

OCR识别出来,然后发给AI让ta帮你订正

就用多模态的AI, 跟它说这是代码注意区分比如 l 和 1 ,; 和 :,0 和 O 等字符容易混淆。

20250711_083443_437.png

我没有原文,不过下面几个错误都没有出现

我用的Gemini. 其他的模型试试才知道.

然后我直接用我的截图软件pix试了一下,似乎,看起来…:

[Meta Variables]
0001 = Cruise;;INDEXED_TEXT;4;0;0;ODV;METACRUISE;3
0002 = Station;;TEXT;21;0;0;ODV;METASTATION;4
0003 = Type;;TEXT;2;0;0;ODV;METATYPE;
0004 = Longitude;degrees_east;FLOAT;4;3;0;ODV;METALONGITUDE;
0005 = Latitude;degrees_north;FLOAT;4;3;0;ODV;METALATITUDE;
0006 = Year;;SHORT;2;0;0;ODV;METAYEAR;
0007 = Month;;BYTE;1;0;0;ODV;METAMONTH;
0008 = Day;;BYTE;1;0;0;ODV;METADAY;
0009 = Hour;;BYTE;1;0;0;ODV;METAHOUR;
0010 = Minute;;BYTE;1;0;0;ODV;METAMINUTE;
0011 = Second;FLOAT;4;0;0;ODV;METASECOND;
0012 = Accession Number ;;UNSIGNED_INTEGER;4;0;0;ODV;METAACCESSIONNUMBER;
0013 = Bot. Depth;m;FLOAT;4;0;0;ODV;METABOTDEPTH;
0014 = PrimaryVarMin;;FLOAT;4;2;0;ODV;METAPRIMVARMIN;
0015 = PrimaryVarMax;;FLOAT;4;2;0;ODV;METAPRIMVARMAX;
1 Like

您的识别结果(右)与原文(左)有4处不同:

001.png

原文在这里,感兴趣的朋友可以自己对照一下。
[Meta Variables]
0001 = Cruise;;INDEXED_TEXT;4;0;0;ODV;METACRUISE;
0002 = Station;;TEXT;21;0;0;ODV;METASTATION;
0003 = Type;;TEXT;2;0;0;ODV;METATYPE;
0004 = Longitude;degrees_east;FLOAT;4;3;0;ODV;METALONGITUDE;
0005 = Latitude;degrees_north;FLOAT;4;3;0;ODV;METALATITUDE;
0006 = Year;;SHORT;2;0;0;ODV;METAYEAR;
0007 = Month;;BYTE;1;0;0;ODV;METAMONTH;
0008 = Day;;BYTE;1;0;0;ODV;METADAY;
0009 = Hour;;BYTE;1;0;0;ODV;METAHOUR;
0010 = Minute;;BYTE;1;0;0;ODV;METAMINUTE;
0011 = Second;;FLOAT;4;0;0;ODV;METASECOND;
0012 = Accession Number;;UNSIGNED_INTEGER;4;0;0;ODV;METAACCESSIONNUMBER;
0013 = Bot. Depth;m;FLOAT;4;0;0;ODV;METABOTDEPTH;
0014 = PrimaryVarMin;;FLOAT;4;2;0;ODV;METAPRIMVARMIN;
0015 = PrimaryVarMax;;FLOAT;4;2;0;ODV;METAPRIMVARMAX;

如果不是纯图片pdf的话,也许还可以试试用pdf编辑器打开,没准可以直接复制。

这个示例不太好,OCR 软件识别代码最大的问题是 容易把标点符号视为噪声,直接忽略,特别是游离/换行的 大括号,大于小于符号。

用第一次给出的截图,丢给gemini 2.5 pro,可以识别出来,但是最后的光标会被识别成"|"

得再提示一次才能改正

ai识别,还得写好提示词

截图

1.jpg
2.jpg
3.jpg

给你写了个工具,可以自己在vercel中部署,也可以用我部署好的,基于ai识别的,需要自己配置ai,gemini-2.5-flash-lite就可以,比较便宜

直接使用的网页:https://code-ocr-app-sigma.vercel.app/

我觉得针对代码截图这种纯英文的截屏内容,其实涉及的不同文字非常有限,完全可以针对性地结合传统cv的模板匹配的方式来提高识别的正确率,而不是由大模型做校对。

不管是软件还是AI最后都需要手工校对的,没办法保证100%的,不过AI倒是可以二次做代码修正,普通OCR做不了

感谢您的付出 :+1:

正解,我都是先OCR然后让ai给我修修。

直接截图发给ai就行.