首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要良好的OCR打印源代码清单,有什么想法吗?

需要良好的OCR打印源代码清单,有什么想法吗?
EN

Stack Overflow用户
提问于 2009-12-11 14:54:14
回答 7查看 12.4K关注 0票数 13

在我的工作中,有时我需要一些打印的源代码,并手动将源代码输入到文本编辑器中。不要问为什么。

显然,输入它需要很长的时间,而且总是需要额外的时间来调试输入错误(oops遗漏了一个"$“签名)。

我决定尝试一些OCR解决方案,比如:

  • Microsoft已构建在OCR 中
    • 结果:遗漏了所有的空格,漏掉了所有的下划线,错误地解释了许多标点符号。
    • 结论:比手工输入代码要慢。

  • 各种在线网络OCR应用程序
    • 结果:与Microsoft文档映像相似或更糟
    • 结论:比手工输入代码要慢。

我觉得源代码非常容易OCR,因为字体是无衬线和单空格。

你们中有人找到了一个很好的OCR解决方案吗?

也许我只是需要一个更好的OCR解决方案(不一定是特定于源代码的)?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-12-11 15:11:05

关于OCR,目前有三种选择:

  • FineReaderOminPage.这两种产品都是商业产品,在功能和OCR结果方面都差不多。关于OmniPage,我不能说太多,但是FineReader确实提供了对读取源代码的支持(例如,它有一个Java库)。
  • 最好的OSS引擎是特塞尔。使用起来要难得多,你可能需要把它训练成你的语言。

我很少使用OCR,但我发现,花费150美元在商业软件上的花费,远远抵消了浪费的时间。

票数 7
EN

Stack Overflow用户

发布于 2016-07-26 16:36:17

今天(问题提出数年后)有两个新的选择:

1.)

Windows 10附带了微软的OCR引擎。

它位于名称空间中:

代码语言:javascript
复制
Windows.Media.Ocr.OcrEngine

https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.ocr

还有一个关于Github的例子:

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/OCR

您需要VS2015来编译这些东西。或者,如果您想使用Visual的旧版本,则必须通过传统COM调用它,然后在Codeproject:http://www.codeproject.com/Articles/262151/Visual-Cplusplus-and-WinRT-Metro-Some-fundamentals上阅读本文

OCR质量很好。然而,如果文本太小,您必须放大图像之前。您可以通过Windows下载世界上存在的每一种语言--即使是手写的!

2.)

另一种选择是使用Office中的OCR库。它是一个COM DLL。它可在Office2003、2007和Vista中使用,但已在Office2010中删除。

http://www.codeproject.com/Articles/10130/OCR-with-Microsoft-Office

缺点是每个Office安装都支持很少的语言。例如,西班牙办事处安装对西班牙语、英语、葡萄牙语和法语的支持。但我注意到,如果您使用西班牙语或英语作为OCR语言来检测西班牙文本,几乎没有什么区别。

如果将图像转换为灰度,则会得到更好的结果。承认是可以的,但我并不满意。虽然Tesseract需要更多的图像预处理才能得到这些结果,但它所产生的误差几乎与Tesseract一样多。

票数 5
EN

Stack Overflow用户

发布于 2015-04-22 21:04:10

试试http://www.free-ocr.com/。当我的IDE在没有警告的情况下在编辑器会话中崩溃时,我使用它从屏幕抓取中恢复源代码。这显然取决于您在编辑器中使用的字体(我在Delphi中使用了CourierNew10pt)。我试着使用Google,当你上传它时,它会显示一个图像--虽然Google在扫描文档上很好,但是由于某种原因,它在Pascal源上失败了。

工作中的FreeOCR示例:输入图像:

给了这个:

代码语言:javascript
复制
begin
FileIDToDelete := FolderToClean + 5earchRecord.Name ;
Inc (TotalFilesFound) ;
if (DeleteFile (PChar (FileIDToDelete))) then
begin
Log5tartupError (FormatEx (‘%s file %s deleted‘, [Annotation, Fi eIDToDelete])) ;
Inc (TotalFilesDeleted) ;
end
else
begin
Log5tartupError (FormatEx (‘Error deleting %s file %s‘, [Annotat'on, FileIDToDelete])) ;
Inc (TotalFilesDeleteErrors) ;
end ;
end ;
FindResult := 5ysUtils.FindNext (5earchRecord) ;
end ;

因此,替换缩进是工作的主要内容,然后将所有的5改为大写的S。它还被80列标记处的垂直线搞混了。幸运的是,大多数错误将被编译器发现(除了引号字符串中的错误外)。

遗憾的是,FreeOCR没有一个“源代码”选项,在这个选项中,空白被视为非常重要。

提示:如果您的源代码包含语法高亮显示,请确保在上传之前将图像保存为灰度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1888587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档