使用 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 的完整功能。您可以先使用免費試用版,或從供應商網站購買永久授權。
基本初始化與設定
- 設定 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");
- 初始化 GroupDocs.Parser:
基本解析不需要額外程式碼;當您傳入已辨識的字串時,函式庫會自動偵測 OCR 輸出格式。
如何在 Java 中提取圖像文字?
載入圖像串流,執行 Aspose.OCR 的 recognizePage 方法,並將產生的文字傳入 GroupDocs.Parser——全部在不到十幾行的 Java 程式碼內完成。此直接方式省去中間檔案,並提供結構化結果,可直接寫入資料庫或供搜尋引擎索引。recognizePage 會處理提供的圖像,並以字串形式返回辨識出的文字。
功能:從圖像串流辨識文字
概觀
此流程將傳入的 InputStream 轉換為 BufferedImage,可選擇性限制 OCR 於特定區域,並呼叫 Aspose OCR 的 recognizePage 方法。返回的字串再交給 GroupDocs.Parser 進行版面分析。
步驟說明
- 建立 AsposeOCR 實例:
OcrEngine類別是所有辨識任務的入口,封裝了語言模型、前置處理過濾器與輸出設定。
import com.aspose.ocr.AsposeOCR;
AsposeOCR api = new AsposeOCR();
- 將圖像串流讀入 BufferedImage:
BufferedImage是 Java 用於在記憶體中儲存圖像並可存取像素資料的類別。ImageIO.read會將位元串流解碼為 OCR 引擎可分析的光柵圖像。使用BufferedImage亦可在辨識前裁切或旋轉圖片。
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
BufferedImage image = ImageIO.read(imageStream);
- 設定辨識參數(可選的區域選取):
若已知感興趣區域(例如護照 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);
}
- 執行辨識並處理警告:
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 可將其映射為結構化模型。
步驟說明
- 啟用區域偵測:
設定recognitionSettings.setDetectAreas(true)可指示引擎返回每個偵測到的文字片段的矩形座標。
RecognitionSettings settings = new RecognitionSettings();
settings.setDetectAreas(true);
(可選)定義特定區域——若只關心圖像的某些部分,可重複使用前一節的矩形邏輯。
執行 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