使用 Aspose.OCR 與 GroupDocs.Parser 從 Java 圖像提取文字

在現代的 Java 應用程式中,將文件的圖片轉換為可搜尋、可編輯的文字是自動化、合規與分析的核心需求。從圖像提取文字(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 Development Kit(JDK): 已安裝 JDK 8 以上。
  • Maven: 推薦的建置工具(若不使用亦可手動管理 JAR)。
  • Aspose OCR 函式庫: 將 JAR 加入專案 classpath。
  • GroupDocs.Parser for Java: 透過 Maven 引入(見下方)或下載 JAR。
  • 基本 Java 知識: 需要熟悉串流、例外處理與集合。

設定 GroupDocs.Parser for Java

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>

直接下載

If you prefer not to use Maven, grab the latest JAR from GroupDocs 版本發布.

取得授權

有效的授權可解鎖 Aspose OCR 與 GroupDocs.Parser 的完整功能。您可以先使用免費試用版,或從供應商網站購買永久授權。

基本初始化與設定

  1. 設定 Aspose OCR 的授權:
    License 類別會從 classpath 載入授權檔 (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. 初始化 GroupDocs.Parser:
    基本解析不需要額外程式碼;當您傳入已辨識的字串時,函式庫會自動偵測 OCR 輸出格式。

如何在 Java 中提取圖像文字?

載入圖像串流,執行 Aspose.OCR 的 recognizePage 方法,並將產生的文字傳入 GroupDocs.Parser——全部在不到十幾行的 Java 程式碼內完成。此直接方式省去中間檔案,並提供結構化結果,可直接寫入資料庫或供搜尋引擎索引。
recognizePage 會處理提供的圖像,並以字串形式返回辨識出的文字。

功能:從圖像串流辨識文字

概觀

此流程將傳入的 InputStream 轉換為 BufferedImage,可選擇性限制 OCR 於特定區域,並呼叫 Aspose OCR 的 recognizePage 方法。返回的字串再交給 GroupDocs.Parser 進行版面分析。

步驟說明

  1. 建立 AsposeOCR 實例:
    OcrEngine 類別是所有辨識任務的入口,封裝了語言模型、前置處理過濾器與輸出設定。
   import com.aspose.ocr.AsposeOCR;
   
   AsposeOCR api = new AsposeOCR();
  1. 將圖像串流讀入 BufferedImage:
    BufferedImage 是 Java 用於在記憶體中儲存圖像並可存取像素資料的類別。ImageIO.read 會將位元串流解碼為 OCR 引擎可分析的光柵圖像。使用 BufferedImage 亦可在辨識前裁切或旋轉圖片。
   import java.awt.image.BufferedImage;
   import javax.imageio.ImageIO;
   
   BufferedImage image = ImageIO.read(imageStream);
  1. 設定辨識參數(可選的區域選取):
    若已知感興趣區域(例如護照 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. 執行辨識並處理警告:
    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. 啟用區域偵測:
    設定 recognitionSettings.setDetectAreas(true) 可指示引擎返回每個偵測到的文字片段的矩形座標。
   RecognitionSettings settings = new RecognitionSettings();
   settings.setDetectAreas(true);
  1. (可選)定義特定區域——若只關心圖像的某些部分,可重複使用前一節的矩形邏輯。

  2. 執行 OCR 並收集區域資訊:
    結果包含 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


相關教學