我想使用 C# 制作一个应用程序,以检查文件是通过 OCR 转换还是通过键盘输入
最佳答案
这项工作通常很难解决,但在特定情况下很容易解决。
例如,如果您的 OCR 软件插入了一堆非 ASCII 字符,而您的所有文档都只包含字母 A 到 Z、小写字母 a-z、数字和标点符号,那么您的工作就相当简单。
要解决该问题,您可以对文档中的字符使用 for 循环,并使用 if(char.IsLetter(currentChar))
和 if(char.IsDigit(currentChar))
等 if 语句,或在 switch 语句中使用 char.GetUnicodeCategory
。
如果有特定的单词/字母总是出错,你可以创建一个 Dictionary<string, bool>
对象,并用你知道 OCR 总是出错的单词和/或你知道人类不会出错的单词填充它。然后,遍历文档中的所有单词,看看是否在字典中找到匹配项,证明它是人类或 OCR。
如果您使用的 OCR 软件不会以易于检测的方式搞砸事情,则您必须求助于人工智能来解决它。希望您不必诉诸于此,因为这真的很难编程,并且需要大量工作才能正确设置和维护。从您的描述和评论来看,您似乎可以使用更简单的解决方案。
不管怎样,做这种工作的软件都会弄错一些文件。用户可能输入了一些奇怪的东西,或者复制/粘贴了一些非 ASCII 字符(例如简历这个词),或者 OCR 不知何故没有犯任何可检测到的错误。希望你有办法处理这个事实,或者你的情况风险还不够大,以至于这是一个问题。
关于c# - 如何检测文本文件是否通过OCR转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5447353/