如何在OCR之前知道图像是否倒置?如果需要变换或校正方向,如何知道90/180变换是正确的



我正在处理多页扫描文本文档,并使用FineReader 12 SDK作为底层OCR引擎。有时,文档被倒置或不同方向扫描,导致所有产生的识别字符都是无法识别的符号。

  1. 在识别\分析\处理之前,有没有办法知道文档是否处于正确的方向
  2. 如何在文档上进行正确的转换或定向,而不是反复尝试
  3. 文档总是英语的,如果检测到的语言是英语,我们能强制执行吗?并在此基础上进行转换

感谢您的帮助。

这个问题可以使用自定义.ini处理配置文件来解决。您可以使用正确的特性自动检测方向和扭曲,然后应用或禁止方向校正和/或去扭曲。

在引擎初始化和识别之间的代码中,如FRE文档Working with Profiles部分所述调用此方法

IEngine::LoadProfile

在项目中的某个位置创建一个新文件document.ini,并将其传递给此方法调用,以便告诉SDK在处理文件之前检查该文件中的属性。

在新创建的文件中添加以下行:

[PageProcessingParams]
PerformPreprocessing = TRUE                  <- allows engine to preprocess image
PerformAnalysis = TRUE
PerformRecognition = TRUE
[PagePreprocessingParams]
CorrectGeometry = TSPV_Auto
CorrectInvertedImage = TRUE
CorrectOrientation = TRUE                    <- correct orientation automatically
CorrectSkew = TSPV_Yes                       <- correct skew automatically
[OrientationDetectionParams]
OrientationDetectionMode = ODM_Normal        <- detect orientation automatically
ProhibitClockwiseRotation = FALSE              |
ProhibitCounterclockwiseRotation = FALSE     <-| allow all orientations
ProhibitUpsideDownRotation = FALSE             |

如果出于任何原因不想使用文件来设置这些属性,可以在代码中调用它们。浏览一下描述所有道具对象树的文档。使用一个文件更容易理解你在做什么,而无需浏览数百行代码。

对于您的语言问题,我建议您使用RecognizerParams并强制执行特定的属性。再次,看看自定义配置文件的文档,因为它非常强大。

[RecognizerParams]
TextLanguage = English                       <- force english
LanguageDetectionMode = TSPV_No              <- TSPV_Yes or TSPV_No are acceptable values

完成此操作后,您应该可以继续操作,并且所有图像文件都应该接近0°方向进行处理。根据文档方向选择语言是一个非常具体的工作流程,唯一的选择就是对其进行编码

祝你的项目好运!

相关内容

  • 没有找到相关文章

最新更新