今天在整理照片时,发现有张图片上拍了一个表格,手动将内容抄写下来不太省力,于是想如果有一个软件可以抓取图像中的表格文字该多好。。。
从头设计一套软件完成这个工作量有点大,想到已经有了一些手写体识别的应用,只要在该技术基础上再增加一层接口,其实就能完成上述任务。
该接口要灵活,能够适应各种应用的文字识别,比如汉字手写体,英文手写体,宋体,以及上面的表格内容识别。因为一幅图像中的内容是千差万别的,我们可以借助一种图像描述原语(Image Description Primitives, IDP)来完成这些内容的区别。
假设有如下IDP:
Def "Table" p1; //表示该图像中有一个表格,声明为对象p1
Set Origin(x0,y0); //表示表格的左上角像素坐标
Set End(x1,y1); //表示表格的右下角像素坐标
p1.cols = [5-10]; //表示该表格的列数可能在5~10列之间
p1.rows = [100-200]; //行数在100~200行之间
Table tb = p1.GetContent(); //创建表格对象,从p1对象中抽取内容,以字符串形式存入tb中
//打印输出字符串
for(int i = 0;i<tb.rows;i++)
{
for(int j = 0;j<tb.cols;j++)
{
printf("%s\t",tb[i][j]);
}
printf("\r\n");
}
End p1; //销毁对象
除了表格对象,我们还可创建纯文本对象,手写体对象,英文手写体对象等,识别原语都封装到p1.GetContent()中。
只是一时想到的,不知有没有价值。本人只是对文字识别感兴趣,没有相关经验,一家之言,欢迎讨论。