ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Audiveris 命令行接口(CLI)完整指南:参数、批处理与进阶用法

Audiveris 命令行接口(CLI)完整指南:参数、批处理与进阶用法 桌面应用计算机视觉图像处理OCR【免费下载链接】audiverisLatest generation of Audiveris OMR engine项目地址https://gitcode.com/gh_mirrors/au/audiveris点击查看免费下载Audiveris 是一套开源的 OMROptical Music Recognition光学乐谱识别引擎其命令行接口允许用户绕过 GUI、直接以脚本化方式驱动整个图像 → 谱表结构 → MusicXML/PDF处理流水线。本文以仓库中的 cli.md 为核心结合 CLI.java 源码逐项拆解全部命令行参数、file展开语法、20 级 Sheet 处理步骤以及面向训练数据产出的高级参数读完即可编写出可复制的批处理命令。一、命令总体语法与解析机制CLI 的语法与-help输出完全一致核心形式为audiveris [OPTIONS] [--] [INPUT_FILES]audiveris是程序入口类见 Audiveris.java它只是一个薄封装将参数原样转交给org.audiveris.omr.Main#mainOPTIONS即下文列出的所有-xxx开关及其取值--是可选的分隔符其后的每个参数一律视为输入文件路径即使它以-开头INPUT_FILES是待处理的输入文件可以是.omr工程文件或任意图片文件。file参数展开任何以字符开头的参数都会被解释为一个文本文件的文件名该文件的内容会在原位置立即展开expandedin situ文件中假设每行存放一个参数。源码注释给出了三条关键约束CLI.java该文件每一行整体被当作一个参数项因此请务必做到每行一个参数一个空行会被解释为一个空字符串参数解析器通过ParserProperties.defaults().withAtSyntax(true)显式开启语法CLI.java。典型用法是把常用参数集写入一个文件避免每次敲一长串# args.txt每行一个参数支持 # 注释 -batch -transcribe -export -output /tmp/omr-outaudiveris args.txt score.jpg参数解析的底层实现CLI 使用args4j解析框架Parameters内部类通过Option注解声明每个开关的用法说明CLI.javaparseParameters会先对每个参数做 trim并将已废弃的-option自动改写为-constantCLI.java。解析完成后会调用checkParams()做一致性校验若同时给出-transcribe与非最后一步的-step会抛出CmdLineExceptionCLI.java。输入文件按扩展名分派为不同的CliTaskCLI.java输入扩展名任务类型行为.omrBookTask以输入/输出身份加载工程文件OMR.engine.loadBook-samples.xml以-samples结尾的文件名SamplesTask把样本文件并入全局样本库其他任意扩展名InputTask视为图像输入OMR.engine.loadInput二、标准参数详解按字母序-batch以无图形界面模式启动 Audiveris。这是脚本化/CI 场景的核心开关。从源码看批处理模式下会把日志写入书目录内的专属日志文件LogUtil.addAppender(book.getRadix(), folder)处理结束后自动保存并关闭书CLI.java。audiveris -batch -transcribe -export score.jpg-constant KEYVALUE为某个应用常量指定取值KEY是该常量的全限定名fully qualified nameVALUE是待赋的值。它是 GUI 中 Tools → Constants 菜单{{ site.tools_constants }}的命令行等价物。源码层面由PropertyOptionHandler实现把keyvalue以 Properties 格式props.load(new StringReader(pair))解析并累积到Parameters.constantsCLI.java最终通过getConstants()供引擎使用。注意-constant是比旧名-option更好的命名两个名字都受支持旧名会被自动改写见上文解析机制。-export将每本书的音乐导出为MusicXML.mxl文件。在批处理模式中若导出失败会抛出Error in exportCLI.java。输出路径遵循 Standard folders 策略例如输入foo.pdf时默认导出为output-folder/foo.mxl。-force强制重处理即使目标步骤已经达到也重新执行。该选项只有在指定了目标步骤-step或给出了-transcribe时才生效被强制重处理的页会被重置到BINARY步骤再重新跑到目标步骤。-help打印上文的参数摘要后立即退出。在源码中对应Option(name -help, help true, ...)帮助模式通过isHelpMode()暴露CLI.java。-output DIRNAME指定基准输出文件夹所有输出文件.omr、.mxl、-print.pdf等都会存放于此。该选项优先级高于偏好设置-output folder命令行选项最高优先偏好设置中的Input sibling输出与输入同目录Browse手工选择的输出文件夹Separate folders按输入文件名拆分子目录如/my/folder/foo/foo.mxl。未提供该选项时按 Standard folders 描述的策略选择默认输出目录。源码中输出路径可直接通过getOutputFolder()读取并可用nullifyOutputFolder()清空CLI.java。-playlist FILE.XML加载指定的.xml文件作为播放列表playlist行为依模式而异批处理模式按 playlist 内容构建一本复合书compound book。源码中PlayListTask.call()会PlayList.load(path)→playList.injectBooks()确保各书加载 → 以 playlist 文件名去扩展名 .omr为目标路径playList.buildCompound(targetPath)CLI.java交互模式仅用 playlist 填充并显示Split and merge拆分与合并对话框用户可复核/编辑后再在期望位置构建复合书。-print将每本书的音乐导出为PDF文件批处理中对应book.print(validStubs)CLI.java。-save仅批处理模式有效每当某张页sheet的一个步骤成功处理后立即把该书 OMR 数据保存到其.omr工程文件。适合长流程中断后的断点续跑。-sheets N M X-Y指定要处理的页 ID 序列以空格分隔的多个数字页 ID 从1开始支持X-Y区间写法表示 X 到 Y含两端的所有 ID注意X-Y必须是一个整体参数-两侧不能有空格源码IntArrayOptionHandler通过NaturalSpec.decode(param, true)解析CLI.java。用途是打开书的某页或只处理部分页。未指定时处理全部有效页。警告指定页 ID 会作用于命令行上引用的所有书因此通常建议一次只对一本书使用-sheets。audiveris -batch -step GRID -sheets 1 4-5 mybook.omr-step STEPNAME指定每张页的目标处理步骤。所有命令行引用的页都会跑到这个步骤为止未指定页时即全部有效页。如果某页已到达目标步骤则不再处理若同时给出-force则将该页重置到BINARY后重新处理。步骤名由StepOptionHandler以OmrStep.valueOf(stepName)解析CLI.java取值只能是下表枚举之一。-swap每张页处理完毕后立即换出swap到磁盘释放内存。处理包含大量页的书时尤其有用对应swapProcessedSheets常量见 CLI.java。-transcribe完整转写transcribe整本书。源码中checkParams()会强制把step设为OmrStep.last()即PAGE并拒绝与显式-step同时使用CLI.java。批处理中调用book.transcribe(validStubs, scores, swap)。-upgrade对旧版.omr工程文件应用升级必要时升级书/页的全部内部数据对应book.upgradeStubs()CLI.java。-version打印程序版本后立即退出。实际输出形如Audiveris - Version: 5.10.0 - Commit: 7cd25598ed15dcf1fd041ab60c1e7543f55588d4 - OS: Windows 10 10.0 - Architecture: amd64 - Java VM: Java HotSpot(TM) 64-Bit Server VM (build 2537-LTS-3491, mixed mode, sharing) - OCR Engine: Tesseract OCR, version 5.5.1--双破折号分隔符--本身不是真实参数而是一个分隔符其后每个参数都被当作输入文件路径即使该参数以-开头。这在处理文件名恰好以-开头的图像时非常有用args4j 的StopOptionHandler实现。FILENAME输入文件输入文件路径。扩展名为.omr时视为 Audiveris 工程文件输入/输出双用其他扩展名一律视为图像输入。三、Sheet 处理步骤20 级流水线-step与-transcribe都作用于下述步骤序列。该序列由OmrStep枚举定义OmrStep.java每个枚举项绑定一个具体的AbstractStep实现类例如GRID→GridStep、HEADERS→HeadersStep、TEXTS→TextsStep。完整顺序与说明如下步骤说明LOAD获取页灰度图像BINARY对灰度图做二值化SCALE计算行宽、行距interline、符杠厚度GRID提取谱线、小节线、系统与声部HEADERS提取谱号-调号-拍号等系统头部STEM_SEEDS提取符干厚度与符干种子BEAMS提取符杠LEDGERS提取加线HEADS提取符头STEMS提取与符头、符杠相连的符干REDUCTION消解符头/符干/符杠中的冲突CUE_BEAMS提取提示符杠cue beamsTEXTS对文本项调用 OCRMEASURES从成组小节线提取原始小节CHORDS将符头聚合成和弦CURVES提取连线、渐强/渐弱与结束线SYMBOLS提取固定形状符号LINKS符号链接与归约RHYTHMS在小节内处理节奏PAGE连接页内各系统源码中OmrStep.first()返回LOADOmrStep.last()返回PAGE且从isParallel()与lastParallel()可以看出直到LINKS为止的步骤都支持按系统/页并行处理AbstractSystemStep子类而RHYTHMS、PAGE是串行的收尾步骤OmrStep.java。# 只跑到谱线网格提取适合快速预览 audiveris -batch -step GRID score.png四、高级参数Advanced Arguments以下参数面向高级用户用于在每张有效页上运行自定义 Java 类或产出训练数据。-run CLASS_NAME在每张有效页上运行指定 Java 类。CLASS_NAME必须是一个 Java 类的全限定名且该类必须继承抽象类org.audiveris.omr.step.RunClass并重写其process()方法源码见 RunClass.javapublic abstract class RunClass { protected Book book; protected SortedSetInteger sheetIds; /** * param book the book to process * param sheetIds specific sheet IDs if any */ public RunClass (Book book, SortedSetInteger sheetIds) { this.book book; this.sheetIds sheetIds; } /** The processing to be done. */ public abstract void process (); }调用时CLI.ProcessingTask通过反射查找(Book, SortedSet)构造函数并实例化ClassOptionHandler用Class.forName(className)校验类存在性然后调用instance.process()任何反射异常会被记录为警告[CLI.java](https://link.gitcode.com/i/2cbe364146d9eb8f2a5771fb9a6b2025#L426-L467, L909-L922)。audiveris -batch -run com.example.MyAnalyzer score.omr-sample用书中的Inter实例填充每本书的样本库sample repository对应book.sample(validStubs)。书级样本库之后可以并入 Audiveris 全局样本库用于准备字形Glyph分类器的训练。合并-samples.xml文件时CLI 会以SamplesTask形式将其直接并入全局样本库CLI.java。完整训练流程参见 training.md 与 samples.md。audiveris -batch -sample mybook.omr-annotate为每本书生成一个Zip 压缩包内含从该书Inter实例派生的图像与符号标注对应book.annotate(validStubs)。这些标注用于构建训练潜在全局分类器的数据集。五、组合实战典型批处理场景将以上参数组合即可完成从图像到成品的全自动转写。以下示例均基于当前仓库版本 5.10.0的真实参数语义# 1) 最简转写 导出 MusicXML 输出到指定目录 audiveris -batch -transcribe -export -output ./out score.jpg # 2) 断点续跑风格每步都存盘每页处理完即换出 audiveris -batch -save -swap -transcribe big_book.omr # 3) 只重跑到 HEADERS 步骤-force 强制重跑 audiveris -batch -force -step HEADERS score.omr # 4) 只处理 1、4~5 三页并导出 PDF audiveris -batch -sheets 1 4-5 -print score.omr # 5) 用参数文件 播放列表构建复合书 audiveris common.args -playlist parts.xml组合时的关键约束均有源码依据-transcribe与显式-step互斥checkParams()会直接报错CLI.java-force仅在-step或-transcribe存在时生效-save仅批处理-batch模式生效-sheets作用于命令行上所有书建议一次一本书批处理结束时无论成功与否书都会保存到默认保存路径CLI.java。六、常见问题与注意事项-开头的文件名使用--分隔符如audiveris -- -leading-dash.pngX-Y区间必须写成单一参数4-5写成4 - 5或4- 5都会导致解析错误除非整体加引号file空行空行会被当作空字符串参数编写参数文件时留意末尾空行输出目录-output优先级最高其次才是偏好设置中的Input sibling/Browse/Separate folders详见 Standard folders版本与兼容本文参数语义以当前仓库5.10.0提交 7cd2559的 CLI.java 实现为准-option已废弃但仍被自动映射为-constant。掌握上述全部参数后即可将 Audiveris 稳定嵌入自动化流水线实现图像输入 → 分级步骤处理 → MusicXML/PDF 输出 → 训练数据收集的全链路脚本化操作。赞分享桌面应用计算机视觉图像处理OCR【免费下载链接】audiverisLatest generation of Audiveris OMR engine项目地址https://gitcode.com/gh_mirrors/au/audiveris点击查看免费下载相关推荐Rollup 命令行接口CLI完全指南配置、参数与实战用法Rollup 命令行接口CLI完全指南配置、参数与实战用法 Rollup 作为下一代 ES 模块打包器其最常见的调用方式就是命令行。本文以当前仓库 do前端构建构建工具开发工具CLIStylelint 命令行接口CLI完全指南参数详解、实战用法与退出码Stylelint 命令行接口CLI完全指南参数详解、实战用法与退出码 Stylelint 是一款强大的 CSS 检查器linter帮助开发者避免样代码质量静态分析前端VitePress 命令行接口CLI完整参考dev / build / preview / init 命令实战指南VitePress 命令行接口CLI完整参考dev / build / preview / init 命令实战指南 本篇指南基于 VitePress 官方前端文档上一篇Pydantic 注解解析Annotation Resolution原理深度剖析从 Forward Reference 到命名空间解析与模型重建下一篇beets freedesktop 插件指南.directory 元数据文件的去向与迁移到 thumbnails 插件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表