本教程介绍如何使用 LEADTOOLS SDK 对图像进行 OCR 并将结果导出到 Java 应用程序中的 JSON 文件。
概述 | |
---|---|
概括 | 本教程介绍如何在 Java 应用程序中将 OCR 结果保存为 JSON。 |
完成时间 | 30分钟 |
项目 | 下载教程项目 (2 KB) |
平台 | Java 应用程序 |
集成开发环境 | Eclipse/IntelliJ |
运行时许可证 | 下载 LEADTOOLS |
尝试使用其他语言 |
|
在开始“将 OCR 结果导出为 JSON - Java”教程之前,请先查看“添加引用”和“设置许可证”教程,熟悉创建项目的基本步骤。
从“添加引用”和“设置许可证”教程中创建的项目副本开始。如果该项目不可用,请按照该教程中的步骤创建它。
所需的引用取决于项目的目的。可以通过.jar
位于 的本地文件添加引用
。
对于该项目,需要以下参考文献:
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 本地引用和设置许可证。
创建项目、添加参考并设置许可证后,就可以开始编码了。
在项目资源管理器_Main.java
中打开该类。将以下语句添加到顶部的块中。import
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:
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
OcrEngine InitOcrEngine()
{
// Initialize OCR engine
OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.LEAD);
ocrEngine.startup(null, null, null, "C:\\LEADTOOLS22\\Bin\\Common\\OcrLEADRuntime");
return ocrEngine;
}
_Main
在类的底部添加另一个名为 的方法。在代码行之后的方法OCRandSaveResults(OcrEngine ocrEngine, String file, String outputDirectory)
中调用新创建的方法,如上所示。run()OcrEngine ocrEngine = InitOcrEngine();
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
。
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
接口以及LEADDocument
、DocumentPage
和DocumentPageText
类。