如何检测文本文件是否通过OCR转换

时间:2011-03-27 05:03:42

标签: c# ocr

我想使用C#创建一个应用程序来检查文件是通过OCR转换还是通过键盘输入

3 个答案:

答案 0 :(得分:4)

当我正在阅读某些内容时,我通常可以通过查看拼写错误来判断它是否被OCR,这些错误是将类似字符替换为正确字符的结果。例如,OoSs1lIrnm,等等。如果你编写程序来寻找那些不寻常的异常,你可以检测出OCR文本。

同样,您可以查找通常表示键入文本的其他拼写错误。例如,键盘上的转置字母(teh)或替换它们的字母可能是输入文本的指示符。

答案 1 :(得分:2)

这项工作一般很难解决,并且在特定情况下很容易解决。

例如,如果您的OCR软件插入了一堆非ASCII字符,并且您的所有文档只包含字母A到Z,小写字母包含az,数字和标点符号,那么您的工作就相当简单。

要解决该问题,您可以对文档中的字符使用for循环,并使用if if(char.IsLetter(currentChar))if(char.IsDigit(currentChar))等if语句,或在switch-statement中使用char.GetUnicodeCategory

如果有特定的单词/字母总是出错,你可以制作一个Dictionary<string, bool>对象,并用你知道OCR总是出错的单词填充它,和/或你知道人类赢得的单词'出错了。然后,循环遍历文档中的所有单词,看看你是否在词典中得到匹配,证明它是人类或OCR。

如果您使用的OCR软件不易以易于检测的方式搞砸,那么您必须使用人工智能来解决问题。希望你不必诉诸于此,因为这对于编程来说真的很难,并且需要做大量工作才能正确设置和维护。从您的描述和评论中,您可以使用更简单的解决方案。

无论如何,做这种工作的软件都会让一些文件出错。用户可能输入了一些奇怪的内容,或者以某些非ASCII字符(例如简历一词)复制/粘贴,或者OCR以某种方式没有发现任何可检测到的错误。希望你有办法处理这个事实,或者你的情况没有风险,这是一个问题。

答案 2 :(得分:1)

OCRed文本几乎总是由一行段落组成。并且OCR引擎通常难以区分一些大写/小写字母和具有相似外观字形的字母,例如S / s,V / v,X / x,O / o / 0,1 / l / I等。