热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于ABBYYSDK实现java版本Hello功能!

1、ABBYY安装完成后这个目录下存放示例代码,C:\ProgramData\ABBYY\SDK\11\FineReaderEngine\Samples2、新建工程把

 

1、ABBYY安装完成后

    这个目录下存放示例代码,C:\ProgramData\ABBYY\SDK\11\FineReader Engine\Samples

2、新建工程把Hello 里面的代码和SamplesConfig.java 放入工程中

3、直接贴代码

SamplesConfig.java 用于存放序列号,本地安装路径等信息

package com.abbyy.test;// � 2013 ABBYY Production LLC
// SAMPLES code is property of ABBYY, exclusive rights are reserved.
//
// DEVELOPER is allowed to incorporate SAMPLES into his own APPLICATION and modify it under
// the terms of License Agreement between ABBYY and DEVELOPER.// Auto-generated config-file for FineReader Engine Java samplespublic class SamplesConfig {/*** Folder with FRE dll* 设置ABBYY所需dll文件地址*/public static String GetDllFolder() {if( is64BitJVMArchitecture() ) {return "C:\\Program Files\\ABBYY SDK\\11\\FineReader Engine\\Bin64";} else {return "C:\\Program Files\\ABBYY SDK\\11\\FineReader Engine\\Bin";}}/*** 设置 ABBYY所需 秘钥* Return developer serial number for FRE*/public static String GetDeveloperSN() {return "SWTT-1101-0006-5071-4505-1208"; //申请试用版序列号}/*** Return full path to Samples directory* 设置ABBYY转换后生成路径*/public static String GetSamplesFolder() {
// return "Directory\\where\\samples\\reside";return "D:\\zhjwFile\\05_abbyy";}/*** Determines whether the JVM architecture is a 64-bit architecture* 判断当前jdk 所属版本是64还是32*/private static boolean is64BitJVMArchitecture(){String jvmKeys [] = {"sun.arch.data.model", "com.ibm.vm.bitmode", "os.arch"};for( String key : jvmKeys ) {String property = System.getProperty( key );if( property != null ) {if( property.indexOf( "64" ) >= 0 ) {return true;} else if( property.indexOf( "32" ) >= 0 ) {return false;} else if( property.indexOf( "86" ) >= 0 ) {return false;}}}return false;}
}

Hello.java 单个文件的转换

package com.abbyy.test.Hello;import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;// (c) 2013 ABBYY Production LLC
// SAMPLES code is property of ABBYY, exclusive rights are reserved.
//
// DEVELOPER is allowed to incorporate SAMPLES into his own APPLICATION and modify it under
// the terms of License Agreement between ABBYY and DEVELOPER.// ABBYY FineReader Engine 11 Sample// This sample shows basic steps of ABBYY FineReader Engine usage:
// Initializing, opening image file, recognition and export.
import com.abbyy.FREngine.*;
import com.abbyy.test.SamplesConfig;public class Hello {public static void main(String[] args) {try {Hello application = new Hello();application.Run();} catch (Exception ex) {displayMessage(ex.getMessage());ex.printStackTrace();}}public void Run() throws Exception {// 加载ABBYY转换引擎loadEngine();try {// 使用ABBYY FineReader引擎进行处理processWithEngine();} finally {// 卸载ABBYY FineReader引擎unloadEngine();}}/*** 加载本地环境,创建转换引擎* @throws Exception*/private void loadEngine() throws Exception {displayMessage("初始化引擎…");engine = Engine.GetEngineObject(SamplesConfig.GetDllFolder(), SamplesConfig.GetDeveloperSN());}/*** 使用ABBYY FineReader引擎进行处理*/private void processWithEngine() {try {// 设置转换参数setupFREngine();// 转换样例图片processImage();} catch (Exception ex) {displayMessage(ex.getMessage());}}/*** 设置转换参数*/private void setupFREngine() {displayMessage("预定义的配置文件加载…");engine.LoadPredefinedProfile("Default");// Possible profile names are:// "DocumentConversion_Accuracy", 文档转换精度,// "DocumentConversion_Speed", 文档转换速度// "DocumentArchiving_Accuracy", 文档归档准确性// "DocumentArchiving_Speed", 文档归档的速度// "BookArchiving_Accuracy", 书存档准确性// "BookArchiving_Speed", 书存档速度// "TextExtraction_Accuracy", 文本提取的准确性// "TextExtraction_Speed", 文本提取的速度// "FieldLevelRecognition", 字段级识别// "BarcodeRecognition_Accuracy", 条形码识别精度// "BarcodeRecognition_Speed", 条形码识别速度// "HighCompressedImageOnlyPdf", 高度压缩图像Pdf// "BusinessCardsProcessing", 名片处理// "EngineeringDrawingsProcessing", 工程图纸处理// "Version9Compatibility", Version9兼容性// "Default" 默认}/*** 转换图片*/private void processImage() {String fileName = "Demo_ChinesePRC.tif"; //Demo_ChinesePRC.tifString imagePath = SamplesConfig.GetSamplesFolder() + "\\"+fileName;try {// Don't recognize PDF file with a textual content, just copy it// 不要识别带有文本内容的PDF文件,只需复制它if (engine.IsPdfWithTextualContent(imagePath, null)) {displayMessage("复制的结果……");String resultPath = SamplesConfig.GetSamplesFolder() + "\\"+fileName+".pdf";Files.copy(Paths.get(imagePath), Paths.get(resultPath), StandardCopyOption.REPLACE_EXISTING);return;}// 创建文档IFRDocument document = engine.CreateFRDocument();try {// Add image file to documentdisplayMessage("加载图片……");document.AddImageFile(imagePath, null, null);// Process documentdisplayMessage("过程……");// 创建识别器参数类IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();IPageProcessingParams ppp = dpp.getPageProcessingParams();ppp.getRecognizerParams().SetPredefinedTextLanguage("ChinesePRC+English"); //设置语言为简体中文和英语document.Process(dpp);// Save resultsdisplayMessage("保存结果……");// 使用默认参数将结果保存到rtfString rtfExportPath = SamplesConfig.GetSamplesFolder() + "\\"+fileName+".rtf";document.Export(rtfExportPath, FileExportFormatEnum.FEF_RTF, null);// Save results to pdf using 'balanced' scenario// 使用“平衡”场景将结果保存为pdfIPDFExportParams pdfParams = engine.CreatePDFExportParams();pdfParams.setScenario(PDFExportScenarioEnum.PES_Balanced);String pdfExportPath = SamplesConfig.GetSamplesFolder() + "\\"+fileName+".pdf";document.Export(pdfExportPath, FileExportFormatEnum.FEF_PDF, pdfParams);} finally {// Close documentdocument.Close();}} catch (Exception ex) {displayMessage(ex.getMessage());}}/*** 卸载ABBYY FineReader引擎* @throws Exception*/private void unloadEngine() throws Exception {displayMessage("卸载ABBYY FineReader引擎...");engine = null;Engine.DeinitializeEngine();}private static void displayMessage(String message) {System.out.println(message);}private IEngine engine = null;
}

 


推荐阅读
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本文介绍了如何在Spring框架中配置和使用定时任务,包括初始化配置和动态启动定时器的方法。通过示例代码展示了如何利用Spring的TaskScheduler接口来创建和管理定时任务。 ... [详细]
  • 本文将指导你如何通过自定义配置,使 Windows Terminal 中的 PowerShell 7 更加高效且美观。我们将移除默认的广告和提示符,设置快捷键,并添加实用的别名和功能。 ... [详细]
  • Qt应用开发:创建基本窗口
    本文介绍如何使用Qt框架创建基础窗口的两种方法。第一种方法直接在main函数中创建并显示窗口;第二种方法通过定义一个继承自QWidget的类来实现更复杂的功能。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文探讨了如何从文本文件中正确读取一行数据,并将其赋值给C语言中的变量,同时解决了常见的错误和注意事项。 ... [详细]
  • 拖拉切割直线 ... [详细]
  • 本文通过两个具体案例——共同好友查找和线段重叠分析,展示了如何利用Scala编程语言解决实际问题。案例一探讨了如何在社交网络中找出两个用户之间的共同好友;案例二则深入解析了如何计算多条线段之间的重叠情况。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • Cadence SPB 16.5 安装指南与注意事项
    本文提供了详细的 Cadence SPB 16.5 安装步骤,包括环境配置、安装过程中的关键步骤以及常见问题的解决方案。适合初次安装或遇到问题的技术人员参考。 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 将数组的所有元素递增 1 的 Java 程序 ... [详细]
author-avatar
hazouri林_978
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有