LEADTOOLS SDK 23.0自动识别和处理表单 - Java

自动识别和处理表单 - Java-LEADTOOLS SDK 23.0

本教程介绍如何创建一组主表单,然后使用 Java 应用程序中的 LEADTOOLS 高级表单界面自动识别和处理表单。

概述 
概括本教程介绍如何在 Java 应用程序中使用 LEADTOOLS 高级表单界面识别和处理表单。
完成时间30分钟
Visual Studio 项目下载教程项目 (2 KB)
平台Java 应用程序
集成开发环境Eclipse/IntelliJ
开发许可证下载 LEADTOOLS
尝试使用其他语言

所需知识

在开始自动识别和处理表单教程之前,请先查看添加引用和设置许可证教程,熟悉创建项目的基本步骤。

创建项目并添加 LEADTOOLS 引用

从“添加引用”和“设置许可证”教程中创建的项目副本开始。如果该项目不可用,请按照该教程中的步骤创建它。

所需的引用取决于项目的目的。可以通过.jar位于 的本地文件添加引用<INSTALL_DIR>\LEADTOOLS23\Bin\Java

对于该项目,需要以下参考文献:

  • leadtools.jar
  • leadtools.barcode.jar
  • leadtools.codecs.jar
  • leadtools.document.writer.jar
  • leadtools.forms.auto.jar
  • leadtools.forms.common.jar
  • leadtools.forms.processing.jar
  • leadtools.forms.recognition.jar
  • leadtools.forms.recognition.ocr.jar
  • leadtools.imageprocessing.core.jar
  • leadtools.ocr.jar
  • leadtools.svg.jar

有关应用程序所需的 JAR 文件的完整列表,请参阅Java 应用程序要包含的文件

设置许可证文件

许可证用于解锁项目所需的功能。必须在调用任何工具包函数之前设置许可证。有关详细信息(包括不同平台的教程),请参阅设置运行时许可证

运行时许可证有两种类型:

  • 评估许可证,在下载评估工具包时获得。它允许对工具包进行评估。
  • 部署许可证。如果需要部署许可证文件和开发者密钥,请参阅获取许可证

添加表单识别和处理代码

创建项目、添加参考并设置许可证后,就可以开始编码了。

在包资源管理器_Main.java中打开该类。将以下语句添加到顶部的块中。import

Java
import java.io.*; 
import java.nio.file.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.document.writer.*; 
import leadtools.forms.auto.*; 
import leadtools.forms.processing.*; 
import leadtools.ocr.*; 

向类中添加以下全局变量_Main

Java
private OcrEngine ocrEngine = null; 
private AutoFormsEngine autoEngine = null; 

修改该run()方法,如下所示,以加载 LEADTOOLS 库,将库路径设置为 CDLL 所在的位置,并调用必要的方法。autoEngineocrEngine在使用后都需要进行处理,以便正确释放这些资源。

Java
public static void main(String[] args) throws IOException 
{ 
	new _Main().run(args); 
} 
private void run(String[] args) { 
	try { 
		Platform.setLibPath("C:\\LEADTOOLS23\\Bin\\CDLL\\x64"); 
	         
		Platform.loadLibrary(LTLibrary.LEADTOOLS); 
		Platform.loadLibrary(LTLibrary.CODECS); 
		Platform.loadLibrary(LTLibrary.OCR); 
		         
		String formToRecognize = "C:\\LEADTOOLS23\\Resources\\Images\\Forms\\Forms to be Recognized\\OCR\\W9_OCR_Filled.tif"; 
		         
		SetLicense(); 
		InitFormsEngines(); 
		RecognizeAndProcessForm(formToRecognize); 
	}  
	catch(Exception ex) { 
		System.err.println(ex.getMessage()); 
		ex.printStackTrace(); 
	} 
	finally { 
		if (autoEngine!=null) 
		    autoEngine.dispose(); 
		if (ocrEngine != null) { 
		    ocrEngine.shutdown(); 
		    ocrEngine.dispose(); 
		} 
	} 
} 

_Main向名为 的类添加一个新方法InitFormsEngines()。在方法内部调用此方法,run()位于方法调用SetLicense()下方,如上所示。将代码添加到InitFormsEngines()方法中以初始化OcrEngineDiskMasterFormsRepositoryAutoFormsEngine

Java
private void InitFormsEngines() { 
    try { 
        ocrEngine = OcrEngineManager.createEngine(OcrEngineType.LEAD); 
        ocrEngine.startup(new RasterCodecs(), new DocumentWriter(), null, null); 
         
        DiskMasterFormsRepository formsRepository = new DiskMasterFormsRepository(ocrEngine.getRasterCodecsInstance(), 
                "C:\\LEADTOOLS23\\Resources\\Images\\Forms\\MasterForm Sets\\OCR"); 
        autoEngine = new AutoFormsEngine(formsRepository, ocrEngine, null); 
         
        System.out.println("Engines initialized successfully!"); 
    } catch (Exception ex) { 
        System.err.println(ex.getMessage()); 
        ex.printStackTrace(); 
    } 
} 

在 _Main 类中创建一个名为 的新方法。在调用 下方的方法RecognizeAndProcessForm(String formToRecognize)中调用此方法,并传入如上所示的字符串值。在本教程中,使用以下目录中的表单:run()InitFormsEngines()formToRecognizeC:\LEADTOOLS23\Resources\Images\Forms\Forms to be Recognized\OCR\W9_OCR_Filled.tif

将以下代码添加到RecognizeAndProcessForm()方法中,以在给定文件路径内的表单上运行自动识别。

Java
private void RecognizeAndProcessForm(String formToRecognize) { 
    try { 
        String resultMessage = "Form not recognized"; 
         
        AutoFormsRunResult runResult = autoEngine.run(formToRecognize, null); 
        if (runResult != null) { 
            resultMessage = String.format("This form has been recognized as a %s with %d confidence.", 
                        runResult.getRecognitionResult().getMasterForm().getName(), 
                        runResult.getRecognitionResult().getResult().getConfidence()); 
        } 
         
        System.out.println("Recognition results:"); 
        System.out.println(resultMessage); 
        System.out.println("========================================================"); 
        ShowProcessedResults(runResult); 
    } catch (Exception ex) { 
        System.err.println(ex.getMessage()); 
        ex.printStackTrace(); 
    } 
} 

_Main向名为 的类添加一个新方法ShowProcessedResults(AutoFormsRunResult runResult)。此方法将在方法底部调用RecognizeAndProcessForm(),如上所示,并传入runResult从类run()内部方法收集的数据AutoFormsRunResult。将以下代码添加到ShowProcessedResults()方法中以处理表单并输出结果。

Java
private void ShowProcessedResults(AutoFormsRunResult runResult) { 
    if (runResult == null) 
        return; 
     
    String resultsMessage = ""; 
    try { 
        for (FormPage formPage : runResult.getFormFields()) { 
            for (FormField field : formPage) { 
                if (field != null) { 
                    TextFormFieldResult textResult = (TextFormFieldResult) field.getResult(); 
                    resultsMessage = String.format("%s%s = %s%n", 
                            resultsMessage, 
                            field.getName(), 
                            textResult.getText()); 
                } 
            } 
        } 
    } catch (Exception ex) { 
        System.err.println(ex.getMessage()); 
        ex.printStackTrace(); 
    } 
     
    System.out.println("Field Processing Results"); 
    System.out.println(resultsMessage!=null && !resultsMessage.isEmpty()  
            ? resultsMessage  
            : "No fields were processed"); 
} 

笔记

The functionality utilized for this tutorial is not supported in Java SE 11+. It is recommended to use Java SE 8 for this tutorial.

运行项目

通过按Ctrl + F11或选择Run -> Run来运行项目。

如果正确遵循这些步骤,应用程序将加载表单图像,从一组主表单中识别表单,并处理表单字段并将结果输出到控制台。

本教程展示了如何在 Java 应用程序中使用 LEADTOOLS 工具包将图像识别为特定表单,并从表单字段中提取文本。我们还介绍了如何使用OcrEngineAutoFormsEngineDiskMasterFormsRepositoryAutoFormsRunResultFormPageFormField类。

参见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值