Halcon 预训练的 OCR 字体
预训练字体是使用深色打印在浅色背景上的符号进行训练的。如果你想使用提供的字体之一读取浅色打印在深色背景上的符号,你可以使用 invert_image
算子反转图像,或者,如果这样做无法获得满意的结果,可以先使用 gen_image_proto
算子设置一个浅灰色值来预处理图像,然后使用 overpaint_region
算子将灰度值设置为 0。
注意
预训练字体是使用 Windows-1252 字符编码进行训练的。因此,ASCII 码大于 127 的字符符号(如 ’e’、’£’、’¥’)的显示外观可能会因系统的字符编码而与预期外观不同。在这种情况下,应根据其 ASCII 码检查分类后的字符,即 ’e’ 的 ASCII 码为 128,’£’ 的 ASCII 码为 163,’¥’ 的 ASCII 码为 165。
除了基于卷积神经网络(CNN)的通用字体外,预训练字体均基于多层感知器(MLP)分类器。
1 具有正则化权重和拒绝类的预训练字体
所有预训练的 OCR 字体都有两个版本。以 _NoRej
结尾的字体名称表示具有正则化权重但没有拒绝类,以 _Rej
结尾的字体名称表示具有正则化权重以及拒绝类。由于进行了正则化,预训练的 OCR 字体提供了更有意义的置信度。对于提供拒绝类的字体,能够将字符与背景杂波区分开来。具有拒绝类的字体在未找到字母时会返回 ASCII 码 26,即 SUB(替代符)。
2 现成可用的 OCR 字体的命名规则
有几组 OCR 字体可供使用。每组中的字体成员不同,因为它们包含不同的符号集。OCR 字体的内容由其名称描述。对于预训练 OCR 字体的名称,应用以下命名规则:
名称以组名开头,例如 Document
或 DotPrint
,后面跟着表示 OCR 字体中包含的符号集的指示符。这些指示符的含义如下:
0-9
:OCR 字体包含数字 0 到 9。A-Z
:OCR 字体包含大写字符 A 到 Z。+
:OCR 字体包含特殊字符。不同 OCR 字体的特殊字符列表略有不同。下面将分别给出每个 OCR 字体的特殊字符列表。_NoRej
:OCR 字体没有拒绝类。_Rej
:OCR 字体有拒绝类。
如果 OCR 字体的名称不包含上述任何指示符,或者仅后跟_NoRej
或_Rej
指示符,通常,该 OCR 字体包含数字 0 到 9、大写字符 A 到 Z、小写字符 a 到 z 以及特殊字符。一些 OCR 字体不包含小写字符(例如DotPrint
)。这会在相应 OCR 字体的描述中明确提及。
3 现成可用的 OCR 字体:Document(文档)
OCR 字体 “Document” 可用于读取以 Arial、Courier 或 Times New Roman 等字体打印的字符。这些是用于打印文档或信件的典型字体。
请注意,Arial 字体中的字符 “I”
和 “l”
无法区分。这意味着“l”
可能会被误识别为 “I”
,反之亦然。
可用的特殊字符:- = + < >. # $ % & ( ) @ * e £ ¥
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0-9,A-Z,a-z,特殊字符 | Document_Rej | Document_NoRej |
A-Z,特殊字符 | Document_A-Z+_Rej | Document_A-Z+_NoRej |
0-9 | Document_0-9_Rej | Document_0-9_NoRej |
0-9,A-Z | Document_0-9A-Z_Rej | Document_0-9A-Z_NoRej |
4 现成可用的 OCR 字体:DotPrint(点阵打印)
OCR 字体 “DotPrint” 可用于读取由点阵打印机打印的字符(见图 1)。
它不包含小写字符。
可用的特殊字符:- / . * :
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0-9,A-Z,特殊字符 | DotPrint_Rej | DotPrint_NoRej |
A-Z,特殊字符 | DotPrint_A-Z+_Rej | DotPrint_A-Z+_NoRej |
0-9 | DotPrint_0-9_Rej | DotPrint_0-9_NoRej |
0-9,特殊字符 | DotPrint_0-9+_Rej | DotPrint_0-9+_NoRej |
0-9,A-Z | DotPrint_0-9A-Z_Rej | DotPrint_0-9A-Z_NoRej |
5 现成可用的 OCR 字体:HandWritten_0-9(手写数字 0-9)
OCR 字体 “HandWritten_0-9” 可用于读取手写数字(见图 2)。
它包含数字 0 到 9。
可用的特殊字符:无
以下是可用的 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0-9 | HandWritten_0-9_Rej | HandWritten_0-9_NoRej |
6 现成可用的 OCR 字体:Industrial(工业字体)
OCR 字体 “Industrial” 可用于读取以 Arial、OCR - B 或其他无衬线字体打印的字符(见图3)。这些字体通常用于打印标签等。
可用的特殊字符: - / + . $ % * e £ ¥
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、a - z、特殊字符 | Industrial_Rej | Industrial_NoRej |
A - Z、特殊字符 | Industrial_A - Z+_Rej | Industrial_A - Z+_NoRej |
0 - 9 | Industrial_0 - 9_Rej | Industrial_0 - 9_NoRej |
0 - 9、特殊字符 | Industrial_0 - 9+_Rej | Industrial_0 - 9+_NoRej |
0 - 9、A - Z | Industrial_0 - 9A - Z_Rej | Industrial_0 - 9A - Z_NoRej |
7 现成可用的 OCR 字体:OCR - A
OCR 字体 “OCR - A” 可用于读取以 OCR - A 字体打印的字符(见图4)。
可用的特殊字符: - ? ! / \ {} = + < > . # $ % & ( ) @ * e £ ¥
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、a - z、特殊字符 | OCRA_Rej | OCRA_NoRej |
A - Z、特殊字符 | OCRA_A - Z+_Rej | OCRA_A - Z+_NoRej |
0 - 9 | OCRA_0 - 9_Rej | OCRA_0 - 9_NoRej |
0 - 9、A - Z | OCRA_0 - 9A - Z_Rej | OCRA_0 - 9A - Z_NoRej |
8 现成可用的 OCR 字体:OCR - B
OCR 字体 “OCR - B” 可用于读取以 OCR - B 字体打印的字符(见图 5)。
可用的特殊字符: - ? ! / \ {} = + < > . # $ % & ( ) @ * e £ ¥
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、a - z、特殊字符 | OCRB_Rej | OCRB_NoRej |
A - Z、特殊字符 | OCRB_A - Z+_Rej | OCRB_A - Z+_NoRej |
0 - 9 | OCRB_0 - 9_Rej | OCRB_0 - 9_NoRej |
0 - 9、A - Z | OCRB_0 - 9A - Z_Rej | OCRB_0 - 9A - Z_NoRej |
0 - 9、A - Z、+ 和 < | OCRB_passport_Rej | OCRB_passport_NoRej |
9 现成可用的 OCR 字体:Pharma(制药)
OCR 字体 “Pharma” 可用于读取以 Arial、OCR - B 等字体以及制药行业常用的其他字体打印的字符(见图 6)。
此 OCR 字体不包含小写字符。
可用的特殊字符: - / . ( ) :
以下是具有不同符号集的可用 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、特殊字符 | Pharma_Rej | Pharma_NoRej |
0 - 9 | Pharma_0 - 9_Rej | Pharma_0 - 9_NoRej |
0 - 9、特殊字符 | Pharma_0 - 9+_Rej | Pharma_0 - 9+_NoRej |
0 - 9、A - Z | Pharma_0 - 9A - Z_Rej | Pharma_0 - 9A - Z_NoRej |
图 6:制药标签示例
10 现成可用的 OCR 字体:SEMI
OCR 字体 “SEMI” 可用于读取以 SEMI 字体打印的字符。SEMI 字体的字符设计得易于相互区分。它包含的字符集有限,可在图 7 中查看。
此 OCR 字体不包含小写字符。
可用的特殊字符: - .
以下是可用的 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、特殊字符 | SEMI_Rej | SEMI_NoRej |
图 7:SEMI 字体的字符集。
图 8:SEMI 字体示例。请注意,在训练之前这些图像进行了反转处理!也就是说,该字体仍然仅针对深色字符印在浅色背景上进行了预训练。
11 现成可用的 OCR 字体:Universal(通用)
OCR 字体 “Universal” 可用于读取多种不同的字符(见图 9)。这种基于卷积神经网络(CNN)的字体是基于 “Document”、“DotPrint”、“SEMI” 和 “Industrial” 字体所使用的字符进行训练的。
可用的特殊字符: - / = + : < > . # $ % & ( ) @ * e £ ¥
以下是可用的 OCR 字体:
符号集 | 带拒绝类的 OCR 字体名称 | 不带拒绝类的 OCR 字体名称 |
---|---|---|
0 - 9、A - Z、a - z、特殊字符 | Universal_Rej | Universal_NoRej |
A - Z、特殊字符 | Universal_A - Z+_Rej | Universal_A - Z+_NoRej |
0 - 9 | Universal_0 - 9_Rej | Universal_0 - 9_NoRej |
0 - 9、特殊字符 | Universal_0 - 9+_Rej | Universal_0 - 9+_NoRej |
0 - 9、A - Z | Universal_0 - 9A - Z_Rej | Universal_0 - 9A - Z_NoRej |
0 - 9、A - Z、特殊字符 | Universal_0 - 9A - Z+_Rej | Universal_0 - 9A - Z+_NoRej |