核心 API

核心 API

omr.api 是大多数代码交互的细小表面:OmrEngine、TemplateProcessor、ImageCollection,以及 FormValidationLogic 枚举。


OmrEngine

OmrEngine 是一个无状态工厂。Generate(source, settings) 接受一个 markup-DSL 源或一个 TemplateConfig 树并返回一个 GenerationResult。GetTemplateProcessor(templateSource, validationLogic) 加载先前保存的 .omr 文件路径并返回一个绑定的 TemplateProcessor;流源则在验证逻辑之前接受一个文本编码参数。

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

在模板验证规则——例如多选约束——在识别期间被破坏时控制引擎行为:Ignore(默认)静默接受违规,Exception 抛出异常,undefined 是枚举的零值。此检查仅适用于其 Multiselect 已禁用的问题;GlobalPageSettings.Multiselect 默认启用。

TemplateProcessor

Recognize(source, recognitionThreshold) 识别单张扫描图像。RecognizeFolder(folderPath, recognitionThreshold) 在一次调用中识别文件夹中的所有图像。Recalculate(result, recognitionThreshold) 使用不同的阈值重新评分已识别的结果,而无需重新读取源图像。

ImageCollection

从名称到原始图像字节的只追加、区分大小写的映射。Add(name, image) 注册图像,Contains(name) 检查名称是否已注册,Count 报告已注册的数量,as_dict() 返回底层映射。标记语言可以通过名称(?image=<name>)而不是文件系统路径来引用已注册的图像。

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

提示与最佳实践

  • 在开发期间传入 FormValidationLogic.Exception,以便立即显现多选违规,而不是静默忽略(仅在 Multiselect 已禁用的问题上触发)。
  • Recalculate() 比重新扫描更便宜——仅在需要更改识别阈值时使用它。
  • ImageCollection 名称区分大小写;两次注册相同名称会抛出错误,而不是静默覆盖。
  • Generate() 通过 GenerationResult.ErrorCode/ErrorMessage 报告大多数失败,而不是抛出异常——在信任生成结果之前检查 ErrorCode。

常见问题

问题原因修复
注册同一图像两次会导致ImageCollection.Add 不允许重复名称先检查 Contains(name),或为每个图像使用唯一名称
不允许的多选答案被静默接受默认 FormValidationLogic.Ignore 不会引发将 FormValidationLogic.Exception 传递给 GetTemplateProcessor(),并确保问题的 Multiselect 已禁用

FAQ

在多个模板中重复使用 OmrEngine 是否安全?

是的 — 它是无状态的;每个 Generate()/GetTemplateProcessor() 调用都是独立的。

我如何一次性识别整个扫描文件夹?

调用 TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) 而不是自行循环 Recognize()。


API Reference 概述

类/方法描述
OmrEngine.Generate将模板渲染为页面图像 + .omr 描述符
OmrEngine.GetTemplateProcessor加载用于识别的 .omr 描述符
TemplateProcessor.Recognize / RecognizeFolder / Recalculate识别入口点
ImageCollection.Add / Contains / as_dict用于标记的内存图像注册表
FormValidationLogic验证违规行为枚举

另请参阅

 中文