提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:李显亮|2020-01-14 11:34:44.843|阅读 242 次
概述:Aspose一直致力于研究用于执行文件间格式转换,对文件进行操作(例如创建、版本、操作等)的文件格式API。好消息来啦!专门用于Java平台识别光学标识并管理转换的API控件Aspose.OMR for Java首次公开发行啦!
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
Aspose一直致力于研究用于执行文件间格式转换,对文件进行操作(例如创建、版本、操作等)的文件格式API。好消息来啦!专门用于Java平台识别光学标识并管理转换的API控件Aspose.OMR for Java首次公开发行啦!
Aspose.OMR for Java是一种可从多种图像格式识别光学标记,包括PNG,GIF,JPEG,TIFF,BMP的API。API将输出保存为CSV和JSON格式,并且可以在执行OMR操作时以文本格式显示结果。可点击下方按钮下载最新版体验。
识别扫描的图像和照片
准确率高
处理旋转和透视图像
从TXT文件生成OMR模板
识别来自测试,考试,问卷,调查的数据
将结果保存为CSV和JSON格式
接下来,让我们快速浏览一下上述Java API的功能,以了解如何识别各种图像格式的光学标记,以及如何从包含MCQ的调查,问卷或测试中捕获人类标记的数据。
Aspose.OMR for Java提供了从创建OMR模板到识别光学标记以捕获数据的完整功能集。该API支持通过简单的文本标记生成OMR模板文件或图像。您只需将模板的文本标记传递给API,它将为您生成模板。以下是OMR模板的示例文本标记。
我们可以简单地将文本标记保存在扩展名为.txt的文本文件中。完成后,可以使用以下步骤生成模板:
下面的代码示例演示如何使用Java从文本标记生成OMR模板。
String outputDirectory = "GenerationResult";
String[] GenerationMarkups = new String[] { "Sheet.txt", "Grid.txt", "AsposeTest.txt" };
String[] GenerationMarkupsNoExt = new String[] { "Sheet", "Grid", "AsposeTest" };
OmrEngine engine = new OmrEngine();
for (int i = 0; i < GenerationMarkups.length; i++) { // call template generation providing path to the txt file with markup GenerationResult res = engine.generateTemplate(GenerationMarkups[i]); // check in case of errors if (res.getErrorCode() != 0) { System.out.println("ERROR CODE: " + res.getErrorCode()); } // save generation result: image and .omr template res.save(outputDirectory, GenerationMarkupsNoExt[i]); }
输出结果:
为了在图像中执行OMR,只需要两件事–准备的OMR模板(.omr)和图像(用户填写的表单/工作表)就可以执行OMR。API支持以下图像格式的OMR:
以下是在图像中执行OMR的步骤:
下面的代码示例演示如何使用Java识别图像中的光学标记:
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };
String outputDirectory = "Result";
String templatePath = "Sheet.omr";
// initialize engine and get template processor providing path to the .omr file
OmrEngine engine = new OmrEngine();
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);
System.out.println("Template loaded.");
// images loop
for (int i = 0; i < UserImages.length; i++) { // path to the image to be recognized String imagePath = UserImages[i]; System.out.println("Processing image: " + imagePath); // recognize image and receive result RecognitionResult result = templateProcessor.recognizeImage(imagePath); // export results as csv string String csvResult = result.getCsv(); String json = result.getJson(); // save csv to the output folder PrintWriter wr = new PrintWriter(new FileOutputStream(UserImagesNoExt[i] + ".csv"), true); wr.println(csvResult); }
可以通过在0到100之间定义一个自定义阈值来微调OMR结果。增大阈值会使API在识别答案时更加严格。可以在TemplateProcessor.recognizeImage()方法中将阈值设置 为第二个参数,如以下Java代码示例所示。
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };
String outputDirectory = "Result";
String templatePath = "Sheet.omr";
int customThreshold = 40;
// initialize engine and get template processor providing path to the .omr file
OmrEngine engine = new OmrEngine();
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);
System.out.println("Template loaded.");
// images loop
for (int i = 0; i < UserImages.length; i++) { // path to the image to be recognized String imagePath = UserImages[i]; System.out.println("Processing image: " + imagePath); // recognize image and receive result RecognitionResult result = templateProcessor.recognizeImage(imagePath, customThreshold); // export results as csv string String csvResult = result.getCsv(); String json = result.getJson(); // save csv to the output folder PrintWriter wr = new PrintWriter(new FileOutputStream(UserImagesNoExt[i] + ".csv"), true); wr.println(csvResult); }
在某些情况下,您可能需要使用不同的阈值重新计算OMR结果。在这种情况下,不必一次又一次地调用TemplateProcessor.recognizeImage(),而是可以使用TemplateProcessor.recalculate()方法配置用于自动重新计算的API,以提高图像处理效率。下面的代码示例演示如何实现OMR结果的重新计算。
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };
String outputDirectory = "Result";
String templatePath = "Sheet.omr";
// init engine and get template processor
OmrEngine engine = new OmrEngine();
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);
System.out.println("Template loaded.");
// Set custom threshold to use in recalculation
// this value is in range (0 to 100)
// represents the percentage of required black pixels on bubble image to be recognized
// i.e. the lower the value - the less black pixels required for bubble to be counted as filled and vice versa
int CustomThreshold = 40;
// images loop
for (int i = 0; i < UserImages.length; i++) { String image = UserImages[i]; String imagePath = image; System.out.println("Processing image: " + imagePath); // recognize image RecognitionResult result = templateProcessor.recognizeImage(imagePath); // get export csv string String stringRes = result.getCsv(); // save csv to output folder String outputName = UserImagesNoExt[i] + ".csv"; PrintWriter wr = new PrintWriter(new FileOutputStream(outputName), true); wr.println(stringRes); System.out.println("Export done. Path: " + outputName); // recalculate recognition results with custom threshold templateProcessor.recalculate(result, CustomThreshold); // get export csv string stringRes = result.getCsv(); // save recalculated results outputName = UserImagesNoExt[i] + "_recalculated.csv"; wr = new PrintWriter(new FileOutputStream(outputName), true); wr.println(stringRes); System.out.println("Recalculated result export done. Path: " + outputName); System.out.println(); }
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn




在现代复杂系统开发中,大型项目面临着需求频繁变更、技术复杂性高、团队协作困难、系统可追溯性差等多重挑战。Sparx Systems Enterprise Architect作为一款领先的UML全生命周期建模平台,通过提供统一的建模环境和贯穿从概念到退役的完整工具链,为大型项目提供了至关重要的战略支撑。
HOOPS SDK系列(包括HOOPS Visualize、HOOPS Exchange、HOOPS Communicator等)为开发者提供从图形渲染、3D数据解析到可视化交互的完整工具链,帮助机器人制造商在有限周期内构建出媲美行业顶级标准的专业应用,实现软硬件的最佳融合。
在接到客户投诉的那一刻,工厂最怕的不是质量问题本身,而是查不清来路:同一批次的成品到底是谁做的?用了哪批原料?哪道工序出了问题?
HOOPS Exchange是Tech Soft 3D提供的行业领先CAD数据访问引擎,支持超过30种主流CAD文件格式的导入与导出,完整保留几何结构、装配层级、PMI注释与工程属性
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站