OCR(Optical Character Recognition,光学字符识别) 用于将图像中的文本转换为可编辑的文本。OCR系统可以识别印刷体或手写体的文字,并将其转换为计算机可处理的文本形式。是指电子设备 (例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程
流程
1.读取图像 2.矫正字符的方向 3.分割字符区域 4.读取字符分类器 5.进行字符识别矫正流程
*获取字符区域 gen_rectangle1(ROl 0,267.5,381.5,607.5,1129.5) *根据刚刚所求区域获得倾斜角度 text_line_orientation (ROl_0, lmage, 25, -0.523599, 0.523599, OrientationAngle) *仿射变换 *求单位矩阵 hom_mat2d_identity (HomMat2DIdentity)//*根据单位矩阵求旋转矩阵 hom_mat2d_rotate (HomMat2Dldentity, -OrientationAngle, Px,Py, HomMat2DRotate)*仿射变换作用到图像上 affine_trans_image (lmage, lmageAffinTrans, HomMat2D, 'constant false')预处理
*灰度膨胀矩形 gray_dilation rect (lmage, lmageMax,7, 7) *灰度腐蚀矩形 gray_erosion_rect (lmage, lmageMin, 11, 11) 灰度开运算矩形 gray_opening_rect (lmage, ImageOpening, 11,11) 灰度闭运算矩形 gray_closing_rect (lmage, lageClosing, 11, 11) *图像取反 invert_image (lmage, lmagelnvert)区域排序
sort_region (Region, SortedRegions, first point, 'true', 'row')区域排序 参数1:原区域 参数2:排序后的区域 参数3:排序模式 按照第一个点排序:一个区域的第一行的最前面的点'first point':last _point':按照最后一个点排序:一个区域的最后一行最后一列的那个点 upper_left:外接矩形的左上角 upper_right:外接矩形的右上角 lower_left:外接矩形的左下角 lower_right:外接矩形的右下角 character'从左到右,从上到下的顺序*参数4:确定排列顺序是递增的还是递减的。'true':递增;'false':递减参数5:输入参数,先按照行排列还是列排列区域划分
gen_rectangle1(ROl_0,120,120,220,220) //图1 partition_rectangle (ROI_0, PartitionedRectangle,10,10) //图2 partition_dynamic(ROl_0, PartitionedDynamic,10,10)//图3partition_dynamic(Region : Partitioned : Distance, Percent :) 定义:在垂直范围较小的位置对区域进行水平分区 使用说明: partition_dynamic将输入Region水平划分为具有大约Distance宽度的区域 Region:输入的区域 Partitioned:输出分割后的区域 Distance:输入的分割距离 Percent:(百分比)最终拆分位置与初始拆分位置的最大偏差为Distance*Percent*0.01 partition_rectangle(Region : Partitioned : Width, Height :) 定义:将区域划分为大小大致相等的矩形。 使用说明: partition rectangle将输入区域划分为范围为WidthxHeight的矩形 Region:输入的区域 Partitioned:输出分割后的区域 Width:矩形的宽 Height:矩形的高 点状特征提取 dots_image(lmage : Dotlmage : Diameter, FilterType, PixelShift : ) *点状物增强运算 dots_image (lmageMean, Dotlmage,5, light'0) dots_image增强输入图像image中直径为diameter的圆形点 dots_image特别适合于点打打印的分 例,对于直径=5,过滤掩模由下式给出:
Diameter:点的直径 FilterType:选择是否应该增强图像中的“暗 (dark)”“亮(light)”或“所有(all)”点。 PixelShift:可用于增加输出图像的对比度(PixelShift > 0)或抑制极亮区域的值,否则这些区域会被切断(PixelShift = -1)。
-
OCR的工作原理是什么?
-
OCR可用于哪些应用?
-
OCR的精度如何?
-
如何使用OCR?
1.Iindustrial可用于读取以Arial,OCR-B或其他sans-serif字体等打印的字符。例如,这些字体通常用于打印标签 2.Universal可用于读取各种不同的字符。这种基于CNN训练的字体的基于Document,DotPrint,SEMI和Industrial'等字符 3.0CR-AOCR-B可用于读取以字体OCR-A、OCR-B打印的字符。(OCR-A和 OCR-B 字体有能够被 OCR 扫描设备准确读取的字符形状,包括银行支票、护照、序列标签和邮件。OCR-A 字体打印工业标准字符集,OCR-B 字体已从工业标准字符集扩展到包括完整的 Latin 1和 Latin 2支持。) 4.DotPrint可用于读取用点式打印机打印的字符。它不包含小写字符. 5.Document可用于读取以Arial,Courier或Times New Roman等字体打印的字符。这些是用于打印文档或字母的典型字体。 后缀带NoRe或Rei的字库内只相差了拒绝字符 032',拒绝字符表示当前字符并不在识别的模型中 1.卷积神经网络CNN 需要对输入图进行背景预分割,获取前景字符region部分,再送进分类器进行识别。 2支撑向量机SVM&最近邻KNN 未内置预训练好的模型,需要添加自定义的训练数据 3.多层感知机MLP 识别率高且分类速度更快,但是训练速度不及SVM 建议:用MLP初识别,CNN验证。预训练文件中CNN对应.occ文件,MLP对应.omc文件