自动检测用于判断识别出的文本片段类型。当 RecognizerParams 对象的 TextTypes 属性设置为多个常量时,就会启动自动检测。此模式主要用于识别表单。对于常规 OCR,我们建议仅在确有必要时使用此模式。
启用自动检测后,ABBYY FineReader Engine 会先尝试检测指定块或块组中的文本类型 (对这些块,RecognizerParams 对象的 TextTypes 属性会设置为多个常量) 。ABBYY FineReader Engine 会从 TextTypes 属性中指定的常量中进行选择。此属性包含 TextTypeEnum 枚举常量的按位 OR 组合,这些常量表示可用于识别的文本类型。例如,如果将其设置为 TT_Normal | TT_Index,ABBYY FineReader Engine 将假定文本只包含普通排版文本以及以邮政编码样式书写的数字,而忽略所有其他类型。在自动检测期间,ABBYY FineReader Engine 会针对 TextTypes 属性中指定的所有文本类型执行识别。然后对 OCR 结果进行比较,并由 ABBYY FineReader Engine 选择最佳结果作为最终结果。
自动检测应当用于一组块,并且这些块中包含的文本都属于同一类型。如果必须为每个块分别选择文本类型,你必须为每个块调用 RecognizeBlocks 方法,并且 RecognizerParams 对象中必须列出可能的文本类型。
如果单个块中包含不同类型的文本,系统会对所有这些文本类型执行识别,但最终只会选取一个结果。因此,块中的全部文本都会被当作同一种类型来识别。这就是为什么包含多种类型文本的块,其识别结果可能会与仅包含单一类型文本的块不同。为了获得更好的 OCR 结果,请针对每种文本类型分别绘制单独的块。
自动检测的速度和准确性取决于 TextTypes 属性中指定的文本类型集合。对于 TT_Normal、TT_Matrix、TT_Typewriter、TT_OCR_A 和 TT_OCR_B 的组合 (可称为“快速自动检测集”) ,自动检测速度最快。在这种情况下,识别器只会启动一次,自动检测会在 OCR 过程中执行,并且通过单个单词而非文本块来检测文本类型。如果只指定了一种文本类型,则不会启动自动检测——引擎会启动与该文本类型对应的识别器。
对于不属于“快速自动检测集”的文本,文本类型是按块而不是按单个单词来检测的。这意味着,如果可能的文本类型集合中包含 TT_Normal、TT_Matrix、TT_Typewriter、TT_OCR_A 和 TT_OCR_B 之外的文本类型,自动检测速度就会更慢。在这种情况下,引擎需要执行多次预 OCR——先对“快速自动检测集”中的类型执行一次,然后对每种额外的文本类型各执行一次预识别。接着,系统会比较结果并选择最佳文本类型。
- 请务必将 TextTypes 属性中的文本类型数量控制在最少。
- 如果 TextTypes 属性等于 TT_Handwritten 和 TT_Index 的任意组合,则不能将 RecognizerParams 对象的 TrainUserPatterns 属性设置为 TRUE。
RecognizerParams
TextTypeEnum