如何使用 Aspose.OCR 和 GroupDocs.Parser 从 Java 图像中提取文本

在现代 Java 应用程序中,将文档的图片转换为可搜索、可编辑的文本是自动化、合规和分析的核心需求。How to extract text from image java 正是本指南要回答的问题。您将学习如何将 Aspose.OCR 的高精度光学字符识别与 GroupDocs.Parser 强大的布局感知解析相结合,同时处理流,使解决方案适用于 Web 服务、批处理作业和桌面工具。

快速答案

  • 哪个库负责 OCR? Aspose.OCR 提供业界领先的印刷文本识别准确率。
  • 哪个组件解析 OCR 输出? GroupDocs.Parser 将原始字符串转换为结构化的表格、表单和段落。
  • 最低 Java 版本? JDK 8 或更高。
  • 生产环境是否需要许可证? 试用版可用于评估;完整许可证可去除水印并解锁所有功能。
  • 可以直接处理图像流吗? 可以——两个 API 都接受 InputStream,非常适合 HTTP 上传。

什么是“从图像中提取文本”?

从图像中提取文本是指将可视字符——例如扫描页或收据的照片——转换为普通的 Unicode 字符串,以便您的代码可以搜索、索引或转换。OCR 引擎分析像素模式,识别字形,并输出文本表示。

为什么将 Aspose.OCR 与 GroupDocs.Parser 结合使用?

将 Aspose.OCR 与 GroupDocs.Parser 结合使用,可同时获得高质量的字符识别和强大的布局分析。Aspose.OCR 从图像中提取原始文本,而 GroupDocs.Parser 解释该文本以识别表格、表单和多列结构,并以结构化格式返回数据,准备进行后续处理。

  • 准确性: Aspose.OCR 提供业界领先的识别率。
  • 灵活性: GroupDocs.Parser 能检测表格、表单字段和多列布局,返回 JSON 或 Java 对象的数据。
  • 流友好: 两个库都直接从 InputStream 读取,消除临时文件并简化云原生部署。

前提条件

  • Java 开发工具包: 已安装 JDK 8+。
  • Maven: 首选构建工具(如果愿意,也可以手动处理 JAR)。
  • Aspose OCR 库: 将 JAR 添加到项目类路径。
  • GroupDocs.Parser for Java: 通过 Maven 引入(见下文)或下载 JAR。
  • 基本的 Java 知识: 您应熟悉流、异常处理和集合。

为 Java 设置 GroupDocs.Parser

Maven 设置

将仓库和依赖项添加到您的 pom.xml 中:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

直接下载

如果您不想使用 Maven,可从 GroupDocs Releases 获取最新的 JAR。

获取许可证

有效许可证可解锁 Aspose OCR 和 GroupDocs.Parser 的全部功能。您可以先使用免费试用版,或从供应商网站购买永久许可证。

基本初始化和设置

  1. Set the license for Aspose OCR:
    License 类从类路径加载许可证文件 (license.lic) 并激活所有 OCR 功能。
   import com.aspose.ocr.License;
   
   // Initialize and set the Aspose OCR license
   License license = new License();
   license.setLicense("YOUR_LICENSE_PATH/AsposeOcrLicensePath");
  1. Initialize GroupDocs.Parser:
    基本解析不需要额外代码;当您传入识别后的字符串时,库会自动检测 OCR 输出格式。

如何在 Java 中提取图像文本?

加载图像流,运行 Aspose.OCR 的 recognizePage 方法,并将生成的文本输入到 GroupDocs.Parser——全部在不到十几行的 Java 代码中完成。这种直接方法消除中间文件,并为您提供可直接用于数据库插入或搜索引擎索引的结构化结果。
recognizePage 处理提供的图像并返回识别后的文本字符串。

功能:从图像流识别文本

概述

该过程将传入的 InputStream 转换为 BufferedImage,可选地将 OCR 限制在特定区域,并调用 Aspose OCR 的 recognizePage 方法。返回的字符串随后交给 GroupDocs.Parser 进行布局分析。

步骤说明

  1. Create the AsposeOCR instance:
    OcrEngine 类是所有识别任务的入口。它封装了语言模型、预处理过滤器和输出设置。
   import com.aspose.ocr.AsposeOCR;
   
   AsposeOCR api = new AsposeOCR();
  1. Read the image stream into a BufferedImage:
    BufferedImage 是一个 Java 类,用于在内存中存储具有可访问像素数据的图像。ImageIO.read 将字节流解码为光栅图像,供 OCR 引擎分析。使用 BufferedImage 还可以在识别前裁剪或旋转图片。
   import java.awt.image.BufferedImage;
   import javax.imageio.ImageIO;
   
   BufferedImage image = ImageIO.read(imageStream);
  1. Configure recognition settings (optional area selection):
    当您知道感兴趣区域时(例如护照 MRZ),可以将 OCR 限制在矩形(Rectangle 对象)内,以加快处理速度并减少误报。
   import com.aspose.ocr.RecognitionSettings;
   
   RecognitionSettings settings = new RecognitionSettings();
   
   // Example: limit OCR to a specific rectangle
   if (options != null && options.getRectangle() != null) {
       ArrayList<Rectangle> areas = new ArrayList<>();
       areas.add(new Rectangle(
           (int) options.getRectangle().getLeft(),
           (int) options.getRectangle().getTop(),
           (int) options.getRectangle().getSize().getWidth(),
           (int) options.getRectangle().getSize().getHeight()));
       settings.setRecognitionAreas(areas);
   }
  1. Run the recognition and handle warnings:
    recognizePage 调用返回一个 RecognitionResult,其中包含提取的文本和任何诊断警告(例如低置信度片段)。检查 result.getWarnings() 以记录潜在的质量问题。
   import com.aspose.ocr.RecognitionResult;
   
   RecognitionResult result = api.RecognizePage(image, settings);
   
   if (options != null && options.getHandler() != null) {
       options.getHandler().onWarnings(pageIndex, result.warnings);
   }
   
   return result.recognitionText;

功能:从图像流识别文本区域

概述

当您需要分别获取每个文本块——例如表单上的各个字段——时,请启用区域检测。OCR 引擎随后返回包含边界框及其文本内容的列表,GroupDocs.Parser 可以将其映射到结构化模型。

步骤说明

  1. Enable area detection:
    设置 recognitionSettings.setDetectAreas(true) 可指示引擎返回每个检测到的文本片段的矩形坐标。
   RecognitionSettings settings = new RecognitionSettings();
   settings.setDetectAreas(true);
  1. (可选)定义特定区域 ——如果只关心图像的某些部分,可复用前一节的矩形逻辑。

  2. Execute OCR and collect area information:
    结果包含一组 TextArea 对象,每个对象提供 getRectangle() 和 getText()。您可以遍历此集合以填充 DTO 或 JSON 负载。

   import java.awt.Rectangle;
   import java.util.ArrayList;
   
   ArrayList<PageTextArea> areas = new ArrayList<>();
   for (int i = 0; i < result.recognitionAreasRectangles.size(); i++) {
       Rectangle rect = result.recognitionAreasRectangles.get(i);
       String text = result.recognitionText;
   
       areas.add(new PageTextArea(
           text,
           new Page(pageIndex, pageSize),
           new Rectangle(
               new Point(rect.getX(), rect.getY()),
               new Size(rect.getWidth(), rect.getHeight()))));
   }
   
   return areas;

实际应用

  • 文档管理系统: 为扫描的 PDF 建立索引,使用户无需打开原始扫描件即可搜索全文。
  • 自动化数据录入: 从拍摄的收据、发票或运单中提取明细。
  • 内容数字化: 将印刷手册转换为可搜索的电子书,保留表格和标题。
  • 合规监控: 扫描监管表单并自动标记缺失或格式错误的字段。

性能考虑

  • 批处理: 每个 JVM 线程最多处理 20 张图像,以摊销 OCR 模型加载开销。
  • 图像质量: 300 dpi 或更高的扫描相比 150 dpi 图像可提升最高约 15 % 的识别准确率。
  • 内存管理: 每次 OCR 之后调用 bufferedImage.flush(),并复用同一 OcrEngine 实例以保持本机模型在内存中。

常见问题与故障排除

症状可能原因解决方案
字符乱码低分辨率图像使用 ≥300 dpi 的扫描;在 OCR 前进行图像锐化
未返回文本不支持的颜色空间(CMYK)使用 BufferedImage.TYPE_INT_RGB 将图像转换为 RGB
内存不足错误非常大的图像(例如 >10 MP)将图像分块处理或增加 JVM 堆大小(-Xmx4g)

常见问题

Q: 如何在 Maven 项目中安装 Aspose OCR?
A: 从 Aspose Maven 仓库将 Aspose OCR 依赖添加到您的 pom.xml,然后运行 mvn clean install。JAR 将自动解析。

Q: 能否从多页 PDF 中提取文本?
A: 可以。将每个 PDF 页面转换为图像(例如使用 Aspose.PDF),然后将每个图像流传入上述 OCR 方法。

Q: 该方法适用于手写文本吗?
A: Aspose OCR 针对印刷字符进行优化。对于手写文字,可考虑使用专门的手写识别服务,如 Azure Computer Vision 或 Google Cloud Vision。

Q: 生产环境是否需要许可证?
A: 试用许可证足以用于评估,但完整许可证可去除水印、解除使用限制,并为商业部署提供优先支持。

Q: 如何提升特定语言的准确性?
A: 在 RecognitionSettings 对象上设置语言(例如 settings.setLanguage(Language.Spanish);)。这会缩小字符集和词典范围,提高置信度分数。

最后更新: 2026-08-26
测试环境: Aspose.OCR 23.12, GroupDocs.Parser 25.5
作者: Aspose

相关教程