用Asprise的OCR包,处理验证码 (三)

2014-11-24 11:03:50 · 作者: · 浏览: 6
tring strCode = ocr.recognizeEverything(image).trim().toLowerCase()
.replaceAll(" ", "");

由于分析的来的字符里出现空格的可能很大,所以要删除。

以上的程序,对加入横七竖八的别的颜色的线的加噪音方法比较有效,加别的颜色的点,也可以处理。

然后对于别的噪音,这里只给点思路,就不给出算法实现了。

比方说,对于那些加入和验证码颜色一致的杂七杂八的点的处理。前面的方法不能去除这种噪音。

我们可以做这么个二重循环,分析每个点,如果这个点颜色的四周(上下左右4个点,或者包括斜角共8个点)的颜色不同,而四周的颜色都一致,那么就判定这个点是噪音点,把它设置成和四周颜色一致。

当然,这个噪音未必是一个点,也许是个块,比方说2*2个点,或者3*3个点。如果这样,处理稍微麻烦点。可以用围棋博弈算法里的分块算法,取得每个小块,那些特别小的就判定为噪音。

然后说说关于扭曲,通常是把字母的上下往左右拉升。如果要其归位,比较难,未必一定可以实现。

可以考虑,用分块算法,取得的每一块,一个一个处理。处理时,把最左上和最左下画连线,算斜率;最右上和最右下也算斜率。取平均值,然后以平均斜率为base进行纠正。