LEADTOOLS SDK --将 OCR 结果导出为 JSON - Java

将 OCR 结果导出为 JSON - Java

LEADTOOLS SDK --将 OCR 结果导出为 JSON - Java_第1张图片

本教程介绍如何使用 LEADTOOLS SDK 对图像进行 OCR 并将结果导出到 Java 应用程序中的 JSON 文件。

概述  
概括 本教程介绍如何在 Java 应用程序中将 OCR 结果保存为 JSON。
完成时间 30分钟
项目 下载教程项目 (2 KB)
平台 Java 应用程序
集成开发环境 Eclipse/IntelliJ
运行时许可证 下载 LEADTOOLS
尝试使用其他语言
  • C#:. NET 6+(控制台)

  • Java: Java

  • Python:Python

所需知识

在开始“将 OCR 结果导出为 JSON - Java”教程之前,请先查看“添加引用”和“设置许可证”教程,熟悉创建项目的基本步骤。

创建项目并添加 LEADTOOLS 引用

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

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

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

  • gson.jar
  • leadtools.jar
  • leadtools.caching.jar
  • leadtools.codecs.jar
  • leadtools.document.jar
  • leadtools.document.writer.jar
  • leadtools.document.pdf.jar
  • leadtools.ocr.jar
  • leadtools.pdf.jar
  • leadtools.svg.jar

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

设置许可证文件

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

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

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

笔记

添加引用和设置许可证教程中更详细地介绍了添加 LEADTOOLS 本地引用和设置许可证。

初始化OcrEngine

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

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

Jav
import com.google.gson.*; 
 
import java.io.File; 
import java.io.IOException; 
import java.nio.file.*; 
import java.util.*; 
 
import leadtools.*; 
import leadtools.document.*; 
import leadtools.ocr.*; 

在该run()方法中,添加以下内容,将库路径设置为 C DLL 文件所在的位置,并加载之前导入的 LEADTOOLS 库。此外,添加两个新String值,分别代表输入文件和 JSON 的输出目录。在本教程中,使用以下文件路径中的 PDF:\LEADTOOLS22\Resources\Images\leadtools.pdf

Jav
public static void main(String[] args) throws IOException { 
	new _Main().run(args); 
} 
private void run(String[] args) { 
	try { 
		Platform.setLibPath("C:\\LEADTOOLS22\\Bin\\CDLL\\x64"); 
	    Platform.loadLibrary(LTLibrary.LEADTOOLS); 
	    Platform.loadLibrary(LTLibrary.DOCUMENT); 
	    Platform.loadLibrary(LTLibrary.DOCUMENT_WRITER); 
	    Platform.loadLibrary(LTLibrary.OCR); 
 
	    SetLicense(); 
 
	    String file = "C:\\LEADTOOLS22\\Resources\\Images\\leadtools.pdf"; 
        String outputDirectory = "C:\\LEADTOOLS22\\Resources\\Images"; 
	             
	    OcrEngine ocrEngine = InitOcrEngine(); 
	    OCRandSaveResults(ocrEngine, file, outputDirectory); 
	}  
	catch(Exception ex) { 
	    System.err.println(ex.getMessage()); 
	    ex.printStackTrace(); 
	} 
} 

向类中添加一个_Main名为 的新方法。在方法调用和值设置下方的方法InitOcrEngine()中调用此方法,如上所示。添加以下代码以返回已初始化的。run()SetLicense()StringOcrEngine

Jav
OcrEngine InitOcrEngine() 
{ 
	// Initialize OCR engine 
	OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.LEAD); 
	ocrEngine.startup(null, null, null, "C:\\LEADTOOLS22\\Bin\\Common\\OcrLEADRuntime"); 
	return ocrEngine; 
} 

添加文本识别并导出为 JSON 代码

_Main在类的底部添加另一个名为 的方法。在代码行之后的方法OCRandSaveResults(OcrEngine ocrEngine, String file, String outputDirectory)中调用新创建的方法,如上所示。run()OcrEngine ocrEngine = InitOcrEngine();

Jav
void OCRandSaveResults(OcrEngine ocrEngine, String file, String outputDirectory) throws IOException  
{ 
	LoadDocumentOptions options = new LoadDocumentOptions(); 
	options.setFirstPageNumber(1); 
	options.setLastPageNumber(-1); 
		 
	LEADDocument document = DocumentFactory.loadFromFile(file, options); 
		 
	document.getText().setOcrEngine(ocrEngine); 
	List documentPageTexts = new ArrayList(); 
		 
	for (DocumentPage page : document.getPages()) 
	{ 
		// Parse the text and build the DocumentPageText object 
		DocumentPageText pageText = page.getText(); 
		pageText.buildText(); 
		pageText.buildWords(); 
		documentPageTexts.add(pageText); 
	} 
    // Get the filename and create the output directory 
    File fileWithoutExt = new File(file.substring(0, file.lastIndexOf("."))); 
    String fileName = fileWithoutExt.getName(); 
    String outputDir = PathCombine(outputDirectory, fileName + "-results"); 
    Files.createDirectory(Path.of(outputDir)); 
    // Save the recognized words to JSON 
    Gson gson = new Gson(); 
    var json = gson.toJson(documentPageTexts); 
    var jsonPath = PathCombine(outputDir, fileName + "-words.json"); 
    Files.write(Path.of(jsonPath), json.getBytes()); 
} 

接下来,向_Main类中添加一个名为 的新方法PathCombine(String... paths)。该方法将在方法内部被调用两次OCRandSaveResults(),如上所示。添加以下代码以合并文件路径并返回相应的String

Jav
public String PathCombine(String... paths) 
{ 
   File file = new File(paths[0]); 
 
   for (int i = 1; i < paths.length ; i++) { 
      file = new File(file, paths[i]); 
   } 
 
   return file.getPath(); 
} 

运行项目

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

如果正确遵循这些步骤,应用程序将对给定的文档进行 OCR 处理,并在指定的输出目录中创建包含识别结果的 JSON 文件。

在此处下载生成的 JSON 。

本教程演示了如何在文档上运行 OCR 并将结果导出为 JSON。此外,还介绍了如何使用IOcrEngine接口以及LEADDocumentDocumentPageDocumentPageText类。

参见

  • LEADTOOLS IOcrEngine 文档
  • LEADTOOLS LEADDocument 文档
  • LEADTOOLS 文档页面文档
  • LEADTOOLS DocumentPageText 文档
  • LEADTOOLS SDK下载

你可能感兴趣的:(LEADTOOLS,23,python,pycharm,开发语言,LEADTOOLS)