功能概述

功能概述

Aspose.OMR FOSS for Python 包括三个层次:设计模板、从模板生成页面图像和描述符,以及从扫描副本中识别标记。


模板设计

模板是以 TemplateConfig 为根的元素配置树。问题元素包括 ChoiceBoxConfig(固定选项气泡)、CheckBoxConfig(任意标记复选框)、GridConfig 和 CompositeGridConfig(合并为单一值的数字/符号矩阵),以及 AnswerSheetConfig(编号答案气泡矩阵)。布局容器(BlockConfig、ContainerConfig、PositionedBlockConfig)控制边框、列和绝对定位。同一棵树也可以通过紧凑的文本标记 DSL 而非 Python 对象来构建。

Generation

OmrEngine.Generate() 将模板渲染为 GenerationResult —— 页面图像加上 .omr 描述符 JSON。MemoryGenerationResult 通过 GetImages()/GetOmr() 将相同的输出以内存流的形式提供给不想触及文件系统的调用者。

Recognition

TemplateProcessor.Recognize() 将单张扫描图像与其创建时的模板进行比对。RecognizeFolder() 对文件夹中的每张图像执行批处理。Recalculate() 在不重新读取源图像的情况下,以不同阈值重新评分已识别的结果。去倾斜校正使用角落参考标记(ReferencePointsSettings)。

结果导出

RecognitionResult 导出为 CSV、JSON 或 XML,每种格式都有对应的内存流变体(GetCsvAsStream、GetJsonAsStream、GetXmlAsStream)。

书写系统和溢出枚举

Arabic、Hebrew、Persian、Urdu 和 Bengali 书写系统(以及 Western),以及 LongWordHandling/OverflowAction 枚举,均已存在并能够针对 API 可靠性以及 Aspose.OMR 表面正确解析。当前此发布的渲染引擎尚未支持它们——渲染仅限左到右/西方语言,且溢出行为尚不可配置。这两项均已列入上游路线图。


技巧与最佳实践

  • 对简单表单使用标记 DSL;当需要以编程方式控制元素位置时,切换到代码优先的 TemplateConfig 树。
  • FormValidationLogic.Exception 会立即显示多选违规,而不是对已禁用多选的问题悄悄忽略它们。
  • 在处理一批扫描时,优先使用 RecognizeFolder() 而不是自行循环调用 Recognize()。
  • 当只需尝试不同的识别阈值时,请调用 Recalculate() 而不是重新扫描。

常见问题

问题原因修复
SaveAsPdf() 抛出 NotImplementedError此版本未实现 PDF 导出使用 Save() 进行 PNG 输出,或将识别结果导出为 CSV/JSON/XML
不允许的多选答案被静默接受默认 FormValidationLogic.Ignore 在违规时不抛出将 FormValidationLogic.Exception 传递给 GetTemplateProcessor(),并确保问题的 Multiselect 已禁用

FAQ

该库是否需要任何 GUI 或外部 OMR 硬件?

不。它完全通过图像文件(扫描件或照片)使用 numpy、opencv-python 和 Pillow 工作。

我可以生成模板的 PDF 吗?

此版本不支持 — GenerationResult.SaveAsPdf() 和 MemoryGenerationResult.GetPDF() 都会触发 NotImplementedError。请改用 Save()/GetImages() 的 PNG 输出。

我该如何一次性处理大量扫描表单?

使用 TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) 在一次调用中识别文件夹中的每张图像。


API Reference 摘要

类/方法描述
OmrEngine.Generate将模板渲染为页面图像 + .omr 描述符
OmrEngine.GetTemplateProcessor加载用于识别的 .omr 描述符
TemplateProcessor.Recognize识别单个扫描图像
TemplateProcessor.RecognizeFolder识别文件夹中的每张图片
TemplateProcessor.Recalculate使用新阈值重新评分结果
RecognitionResult.GetCsv / GetJson / GetXml导出识别结果

另请参阅

 中文