最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java實現(xiàn)OCR 文字識別的兩種方案

 更新時間:2025年12月09日 09:26:47   作者:xienda  
OCR技術(shù)已廣泛應(yīng)用于圖文轉(zhuǎn)換、證件識別、票據(jù)處理等場景,作為 Java 開發(fā)者,如何快速實現(xiàn) OCR 功能?本文將介紹兩種常用方案,幫助你快速上手 Java OCR 開發(fā),需要的朋友可以參考下

引言

OCR(Optical Character Recognition,光學(xué)字符識別)技術(shù)已廣泛應(yīng)用于圖文轉(zhuǎn)換、證件識別、票據(jù)處理等場景。作為 Java 開發(fā)者,如何快速實現(xiàn) OCR 功能?本文將介紹兩種常用方案:基于 Tesseract 的本地 OCR 引擎調(diào)用,以及基于百度 AI 開放平臺的 OCR 接口調(diào)用,幫助你快速上手 Java OCR 開發(fā)。

方案一:本地 Tesseract OCR 引擎(離線識別)

Tesseract 是谷歌開源的 OCR 引擎,支持多語言識別,適合離線場景。Java 中可通過tess4j庫簡化調(diào)用。

1. 環(huán)境準(zhǔn)備

步驟 1:安裝 Tesseract 引擎

  • Windows:從 UB-Mannheim/tesseract 下載安裝包,勾選 "Add to PATH"。
  • Linux:執(zhí)行 sudo apt install tesseract-ocr。
  • 驗證:終端輸入 tesseract --version,顯示版本信息則安裝成功。

步驟 2:下載語言包

Tesseract 默認(rèn)支持英文,中文需額外下載語言包:

  • 從 tessdata 下載 chi_sim.traineddata(簡體中文)。
  • 將語言包放入 Tesseract 安裝目錄的 tessdata 文件夾(如 C:\Program Files\Tesseract-OCR\tessdata)。

步驟 3:引入 Maven 依賴

pom.xml中添加tess4j依賴(封裝了 Tesseract 的 Java 調(diào)用):

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>5.1.0</version>
</dependency>

2. 代碼實現(xiàn)(本地識別)

核心邏輯:通過tess4j加載圖片,指定語言包,調(diào)用識別接口。

import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;

public class LocalOcrDemo {
    public static void main(String[] args) {
        // 1. 創(chuàng)建Tesseract實例
        ITesseract tesseract = new Tesseract();
        
        // 2. 配置語言包路徑(默認(rèn)會讀取系統(tǒng)環(huán)境變量中的TESSDATA_PREFIX)
        // 若識別失敗,可手動指定路徑:tesseract.setDatapath("C:\\Program Files\\Tesseract-OCR\\tessdata");
        
        // 3. 設(shè)置識別語言(英文+中文,多個語言用+分隔)
        tesseract.setLanguage("eng+chi_sim");
        
        try {
            // 4. 識別圖片(支持jpg、png、gif等格式)
            File imageFile = new File("test.png"); // 待識別的圖片路徑
            String result = tesseract.doOCR(imageFile);
            
            // 5. 輸出識別結(jié)果
            System.out.println("識別結(jié)果:\n" + result);
        } catch (TesseractException e) {
            System.err.println("識別失?。? + e.getMessage());
        }
    }
}

3. 優(yōu)化建議

  • 圖片預(yù)處理:識別精度受圖片質(zhì)量影響,建議先對圖片進(jìn)行灰度化、降噪、放大處理(可使用Java ImageIOOpenCV實現(xiàn))。
  • 自定義訓(xùn)練:對特定場景(如驗證碼、票據(jù)),可通過 Tesseract 訓(xùn)練工具生成專屬語言包,提升精度。

方案二:百度 AI OCR 接口(在線識別)

百度 AI 開放平臺提供了免費的 OCR 接口,支持通用文字、身份證、銀行卡等場景,精度高于本地引擎,但需聯(lián)網(wǎng)且有調(diào)用限制(免費額度:通用文字識別 500 次 / 天)。

1. 環(huán)境準(zhǔn)備

步驟 1:獲取 API 密鑰

  • 登錄 百度 AI 開放平臺,創(chuàng)建 "文字識別" 應(yīng)用,獲取API KeySecret Key。

步驟 2:引入 SDK 依賴

百度提供了 Java SDK,簡化接口調(diào)用:

<dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>4.16.14</version>
</dependency>

2. 代碼實現(xiàn)(API 調(diào)用)

核心邏輯:通過 SDK 獲取訪問令牌(AccessToken),調(diào)用通用文字識別接口。

import com.baidu.aip.ocr.AipOcr;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.HashMap;

public class BaiduOcrDemo {
    // 替換為你的API Key和Secret Key
    private static final String APP_ID = "你的APP_ID";
    private static final String API_KEY = "你的API_KEY";
    private static final String SECRET_KEY = "你的SECRET_KEY";

    public static void main(String[] args) {
        // 1. 初始化客戶端
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
        
        // 2. 可選:設(shè)置網(wǎng)絡(luò)參數(shù)(超時時間、重試次數(shù)等)
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        
        // 3. 調(diào)用通用文字識別(高精度版)
        HashMap<String, String> options = new HashMap<>();
        options.put("language_type", "CHN_ENG"); // 中英文混合
        options.put("detect_direction", "true"); // 檢測方向
        
        // 圖片路徑或二進(jìn)制數(shù)據(jù)(本地圖片用getPath,網(wǎng)絡(luò)圖片需先下載)
        String imagePath = "test.png";
        JSONObject response = client.basicAccurateGeneral(imagePath, options);
        
        // 4. 解析響應(yīng)結(jié)果
        parseResult(response);
    }

    // 解析JSON結(jié)果,提取識別文字
    private static void parseResult(JSONObject response) {
        if (response.has("words_result")) {
            JSONArray wordsArray = response.getJSONArray("words_result");
            System.out.println("識別結(jié)果:");
            for (int i = 0; i < wordsArray.length(); i++) {
                JSONObject wordObj = wordsArray.getJSONObject(i);
                System.out.println(wordObj.getString("words"));
            }
        } else {
            System.err.println("識別失敗:" + response.toString());
        }
    }
}

3. 接口說明

百度 OCR 提供多種接口,根據(jù)場景選擇:

  • basicGeneral:通用文字識別(快速版)
  • basicAccurateGeneral:通用文字識別(高精度版)
  • idcard:身份證識別
  • bankcard:銀行卡識別

免費額度可在百度 AI 控制臺查看,超出需付費。

兩種方案對比

維度本地 Tesseract百度 AI OCR
網(wǎng)絡(luò)依賴離線可用必須聯(lián)網(wǎng)
識別精度依賴圖片質(zhì)量和語言包高(基于深度學(xué)習(xí)模型)
調(diào)用限制免費額度有限制
定制化可訓(xùn)練專屬模型不可定制,依賴平臺能力
適用場景離線、低頻次、簡單場景在線、高頻次、高精度需求

注意事項

本地 Tesseract

  • 語言包必須與 Tesseract 版本兼容(建議使用最新版)。
  • 中文識別時,圖片文字需清晰(避免藝術(shù)字、模糊字體)。

百度 AI OCR

  • APP_ID等密鑰需妥善保管,避免泄露。
  • 大圖片建議先壓縮(接口限制單張圖片≤4MB)。

總結(jié)

本文介紹了 Java 實現(xiàn) OCR 的兩種主流方案:本地 Tesseract 適合離線場景,百度 AI OCR 適合對精度要求高的在線場景。實際開發(fā)中可根據(jù)需求選擇,也可結(jié)合兩者(離線優(yōu)先,失敗時調(diào)用 API 兜底)。

以上就是基于Java實現(xiàn)OCR 文字識別的兩種方案的詳細(xì)內(nèi)容,更多關(guān)于Java OCR 文字識別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mybatis升級mybatis-plus時踩到的一些坑

    mybatis升級mybatis-plus時踩到的一些坑

    這篇文章主要給大家介紹了關(guān)于mybatis升級mybatis-plus時踩到的一些坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 基于Java實現(xiàn)經(jīng)典蜘蛛紙牌游戲

    基于Java實現(xiàn)經(jīng)典蜘蛛紙牌游戲

    《蜘蛛紙牌》(Ancient?Spider)?是由Oberon?Games開發(fā)的一款休閑益智類游戲。本文將利用Java語言實現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-05-05
  • IntelliJ?IDEA2022中的Java文檔注釋設(shè)置、操作方法

    IntelliJ?IDEA2022中的Java文檔注釋設(shè)置、操作方法

    這篇文章主要介紹了IntelliJ?IDEA2022中的Java文檔注釋設(shè)置、操作詳述,本文通過圖文并茂的方式給大家介紹IDEA2022?文檔注釋設(shè)置方法,需要的朋友可以參考下
    2022-08-08
  • 基于Java實現(xiàn)獲取本地IP地址和主機名

    基于Java實現(xiàn)獲取本地IP地址和主機名

    這篇文章主要介紹了基于Java實現(xiàn)獲取本地IP地址和主機名,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Spring Boot 利用WebUploader進(jìn)行文件上傳功能

    Spring Boot 利用WebUploader進(jìn)行文件上傳功能

    本文的重點是給大家介紹在Spring Boot項目中利用WebUploader如何進(jìn)行文件上傳,本文通過示例代碼給大家介紹,需要的朋友參考下吧
    2018-03-03
  • log4j2使用filter過濾日志方式

    log4j2使用filter過濾日志方式

    這篇文章主要介紹了log4j2使用filter過濾日志方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java查搜索文件內(nèi)容實現(xiàn)方式

    Java查搜索文件內(nèi)容實現(xiàn)方式

    用戶為解決無法搜索文件內(nèi)容的問題,編寫了一個支持單文件、文件夾及多層遞歸查找的工具,具備字符串匹配及忽略大小寫功能,并計劃擴展日期、創(chuàng)建人等組合搜索條件,最終打包成exe便于快速查找所有文件內(nèi)容
    2025-09-09
  • Java中import導(dǎo)入的用法說明

    Java中import導(dǎo)入的用法說明

    這篇文章主要介紹了Java中import導(dǎo)入的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java并發(fā)包線程池ThreadPoolExecutor的實現(xiàn)

    Java并發(fā)包線程池ThreadPoolExecutor的實現(xiàn)

    本文主要介紹了Java并發(fā)包線程池ThreadPoolExecutor的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • IDEA設(shè)置允許一個類并行的方法

    IDEA設(shè)置允許一個類并行的方法

    這篇文章主要介紹了IDEA設(shè)置允許一個類并行的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04

最新評論

府谷县| 广平县| 宿州市| 姚安县| 长白| 宜君县| 荣昌县| 巧家县| 都安| 天门市| 东乌| 定安县| 广昌县| 鄯善县| 兰州市| 政和县| 广东省| 梁山县| 红河县| 伊川县| 京山县| 拉萨市| 闻喜县| 手机| 广水市| 湛江市| 柳州市| 乐东| 武邑县| 资讯 | 大宁县| 乐东| 西丰县| 威信县| 临高县| 青浦区| 浮山县| 郸城县| 霍城县| 泸定县| 西青区|