OCR算法的改进

met*_*urg 16 java ocr opencv knn neural-network

我正在创建一个基于Java的OCR.我的目标是从视频文件中提取文本(后处理).

这是一次艰难的搜索,试图找到纯粹基于Java的免费开源OCR.我发现Tess4J是唯一受欢迎的选项,但考虑到对原生界面的需求,我不知何故感到倾向于从头开发算法.

我需要创建一个可靠的OCR,只要预先定义了文本位于视频帧中的区域,就能以合理的准确度正确识别英文字母(仅限计算机化字体,而不是手写文本).我们还可以假设给出了文本的颜色.

到目前为止我做了什么:

(使用Java绑定为openCV完成的所有图像处理)

  1. 我使用以下方法提取了训练分类器的功能:

    A.将字符图像下采样到12 X 12分辨率后的像素强度.(144个特征向量)

    B.对于所有这些角度,使用信号的均方值,跨越8个不同角度(0,11.25,22.5 ......等)的Gabor小波变换和计算的能量.(8个特征向量)

A + B给出了图像的特征向量.(共152个特征向量)

我有62个课程用于分类,即.0,1,2 ... 9 | a,b,c,d ... y,z | A,B,C,d ... Y,Z

我使用20 x 62个样本(每个类别20个)训练分类器.

  1. 为了分类,我使用了以下两种方法:

    A. ANN有1个隐藏层(120个节点).输入层有152个节点,输出有62个.隐藏和输出层具有sigmoid激活功能,网络使用弹性反向传播进行训练.

    B.整个152维度的kNN分类.

我站着的地方:

k-Nearest Neighbor搜索结果是比神经网络更好的分类器(到目前为止).然而,即使使用kNN,我发现很难对以下字母进行分类: 6 要么 米.

而且,它正在分类 2 作为Z ...举几个异常.

我在找什么:

我想找出以下内容:

  1. 为什么ANN表现不佳?我应该使用什么配置的网络来提高性能?我们可以微调ANN以比kNN搜索更好吗?

  2. 我可以使用哪些其他特征向量来使OCR更加健壮?

欢迎任何其他性能优化建议.

Rob*_*bAu -1

对于特征向量:您是否标准化了强度?也许使用直方图均衡化。

对于分类:看看t-SNE。它是一种将高维特征减少到更容易聚类的二维平面的随机方法。