从图片里检索文字,有什么成熟的算法或策略么?
梦想家起飞 2016-10-18 01:19:08 面对古籍扫描件,数量很多,不过也有穷,非海量。
从用户操作而言,用户输入的文字,可能是普通unicode字符,也可能是图片(图片文字),
检索出来的是包含关键字的书籍扫描件(一页或多页)。
目前试验过的第一个思路如下:
1、扫描件切字,因为很工整,把扫描件的字一个一个切出来变成图片,并根据原位置建立索引;
2、为每个切出来的字提取特征点(用SIFT/SURF算法);
3、为用户输入的关键字图片(非图片的先渲染为图片)上的文字区域提取特征点(算法同上);
4、将2和3的特征点进行匹配,筛出可靠的匹配并rank得出检索结果;
这个思路有一个比较严重的问题未能解决:对于笔画简单的文字,像“一、二、十、七、士、土”之类,
能提取的有效特征点数量太少,不足以精确匹配。还有一些结构复杂的字,匹配效果也缺乏鲁棒性。基本上是考虑放弃了。
第二个思路和上一个类似,只是改用Shape Context算法,目前还没有来得及验证。
第三个思路是使用模板匹配(如OpenCV的matchTemplate)与之相关的算法也很多,以前少量试过的效果还可以,
不过这个思路因为不能提取特征,每次检索都得大量匹配,在性能上恐怕是没法接受的。。
第四个思路,使用分类器,将每个汉字训练多次,最终让分类器自己能“认识”图片上的文字,
这个思路的问题是训练用的素材和训练本身工作量会非常大,而且古籍的异体字极多,没有多少现成的素材。。
第五个思路是传统OCR,如果对于一般现代文,这个思路可能效果会不错,但是对于古籍。。。
不仅异体字很多,而且很多字在unicode的扩展区,有的甚至根本没有被unicode收纳(字体就更别提了)。
不能妥善支持图片文字的话,对于检索工作是帮助不大的,这也是优先不考虑OCR的原因。
除了三之外,其他几个都是可以后期通过CNN进行训练和优化的,不过,那是后话了。现在还没有找到鲁棒性足够好的思路。
跟一般的基于文字的搜索引擎或者“以图找图”引擎相比,有两个显著的特征是很不一样的:
1、普通照片、图画很容易提取特征点,而文字很难;
2、生僻字、异体字的兼容性需要足够好;
本来也是小众需求,这两方面目前还很难找到有效的参考资料。
求指导。。。//bow~