java - 过滤 OCR 结果

标签 java android ocr

<分区>

我正在研究我正在研究的 OCR,但现在我被困在如何过滤 OCR 结果以将每个字符串移动到一组文本字段中。

例如, OCR 结果:

Name : Jhon

No : 12345

Address : Canada

...但有时它会将“Jhon”分配给文本字段“地址”,或将“Jhon”分配给文本字段“否”。

最佳答案

对于合并了checksum的数据(一般是银行账号),你可以验证checksum,如果真的想要非常低的误报率,你需要视频流输入,持续做OCR一段时间积累几个结果。当大多数“校验和有效”的字符串相同时,那很可能 (99,5+%) 是正确的字符串。

如果没有视频流和累积结果,您可以使用校验和数据达到 97-99.5%。

没有校验和:好吧,你真的无法分辨。

对于像“No”这样的字段,你至少可以拒绝按字母顺序排列的结果,对于“Name”,你可以对数字进行惩罚(尽管我认为有一些模糊的国家/地区名称中的数字是有效的?),在 Address 中你可以给出对“alphabet_digit”结果的额外信心,加上所有街道/城市字符串的字典,但最后没有办法说哪个结果比其他结果更正确。

再次输入视频流并在较长时间段(1-5 秒)内累积多个结果可能会给你足够的结果来对它们进行一些统计,然后如果你有足够大的阈值来显示相同​​部分的结果OCR,认为它是“正确的”。

即便如此,此类字符串的可靠性可能会低于 98%,接近 90-95%,对于没有任何提示(数字/字母/大小/位置)的通用文本,您甚至可以达到 50-80% 的可靠性范围(作为整个字符串,因为 OCR 本身每个字符大约有 95-98%)。

关于java - 过滤 OCR 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375324/

相关文章:

java - 测试用例未按照 TestNG xml 中测试类名称的顺序定义执行

android - 在 ViewFlipper 中按需工作

java - 我下面的代码仅适用于 8 位深度图像。如果我尝试使用超过 8 位深度的图像,则会触发 if 语句

Java - 数量很少的可比接口(interface)

无论方法输出如何,Java 方法都返回 0

java - 将 ObjectMapper 声明为 bean 有什么好处?

android - 如何垂直对齐带有可绘制背景的按钮中的文本?

android - 如何在日历 View 日期框中添加文本

<canvas> 上的 JavaScript 文本识别和 OCR

image-processing - 图片很好,但没有来自 OCR 的文本,为什么? Python、Skimage、PIL、Tesseract