在我的工作中,有时我需要一些打印的源代码,并手动将源代码输入到文本编辑器中。不要问为什么。
显然,输入它需要很长的时间,而且总是需要额外的时间来调试输入错误(oops遗漏了一个"$“签名)。
我决定尝试一些OCR解决方案,比如:
我觉得源代码非常容易OCR,因为字体是无衬线和单空格。
你们中有人找到了一个很好的OCR解决方案吗?
也许我只是需要一个更好的OCR解决方案(不一定是特定于源代码的)?
发布于 2009-12-11 15:11:05
关于OCR,目前有三种选择:
我很少使用OCR,但我发现,花费150美元在商业软件上的花费,远远抵消了浪费的时间。
发布于 2016-07-26 16:36:17
今天(问题提出数年后)有两个新的选择:
1.)
Windows 10附带了微软的OCR引擎。
它位于名称空间中:
Windows.Media.Ocr.OcrEnginehttps://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一样多。
发布于 2015-04-22 21:04:10
试试http://www.free-ocr.com/。当我的IDE在没有警告的情况下在编辑器会话中崩溃时,我使用它从屏幕抓取中恢复源代码。这显然取决于您在编辑器中使用的字体(我在Delphi中使用了CourierNew10pt)。我试着使用Google,当你上传它时,它会显示一个图像--虽然Google在扫描文档上很好,但是由于某种原因,它在Pascal源上失败了。
工作中的FreeOCR示例:输入图像:

给了这个:
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没有一个“源代码”选项,在这个选项中,空白被视为非常重要。
提示:如果您的源代码包含语法高亮显示,请确保在上传之前将图像保存为灰度。
https://stackoverflow.com/questions/1888587
复制相似问题