python - 如何在手写文本识别中对数字和单词进行分类
问题描述
我正在使用神经网络进行手写文本识别,我认为我已经用过
- 用于图像处理的opencv
- 页面分割和提取文本框
- 分词(或任何更准确的分词/屏蔽文本的建议)
我有一个带有姓名、年龄和出生日期文本框的表格,姓名字段的结果很好(能够识别),但对于 DOB 和年龄,它无法将其完全识别为数字,一些数字,如“1”和 '0' 被识别为 'i' 和 'o'。
我如何将其分类为单词和数字,或者我可以将任何其他模型仅用于数字(目前我已经使用 IAM dataset-words 训练了 NN),或者任何建议。
result : --i-16-16-
result : -i-i6-86-
解决方案
你可以训练另一个神经网络,因为数字识别不是一项相对计算密集的任务。
或者,如果文档具有固定格式,那么您就会知道年龄和出生日期在哪里。在这种情况下,在对输出层设置阈值以决定输出时,只对表示数字的神经元进行此操作。
例如,假设您有 5 个数字{'1','2','3','4','5'}
和 5 个字母{'a','e','i','o','u'}
。训练有素的 NN 的输出层给出[0.38, 0.006, 0.01, 0.004, 0.1, 0.03, 0.009, 0.4, 0.001, 0.06]
.
在其上执行 softmax 以获得概率解释。并选择一个输出。而是只对代表数字的神经元执行 softmax。您也可以将其视为先验概率为零。
这里i
的激活比1
. 但是在执行 softmax 时,您只选择代表数字的神经元。因此你得到1
.
推荐阅读
- python - 如何对来自 `image_dataset_from_directory()` 的图像进行图像转换,以便将其转换为 Lab 并返回 L 通道?
- python - 如何修改保存的html页面?
- android - 我如何编码 SplashScreenActivity.kt 因为我的不起作用
- python - 使用 Python 抓取网站时设置代理
- spring-boot - 如何使用 Spring Boot 或 Spring Kafka 集成将消息从多个主题发送到多个主题
- javascript - 如何验证输入值是否确实存在?
- c++ - 是否保证一个线程最终可以看到另一个线程对某个共享变量的写入?
- javascript - 重定向循环passportJS
- algorithm - 通过一次获取整个数据而不是一个文件来压缩文件夹
- ruby-on-rails - 加载数据库定义时获取未定义的方法 oid