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

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

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

引言

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

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

Tesseract 是谷歌開源的 OCR 引擎,支持多語(yǔ)言識(shí)別,適合離線場(chǎng)景。Java 中可通過(guò)tess4j庫(kù)簡(jiǎn)化調(diào)用。

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

步驟 1:安裝 Tesseract 引擎

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

步驟 2:下載語(yǔ)言包

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

  • 從 tessdata 下載 chi_sim.traineddata(簡(jiǎn)體中文)。
  • 將語(yǔ)言包放入 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. 代碼實(shí)現(xiàn)(本地識(shí)別)

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

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

3. 優(yōu)化建議

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

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

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

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

步驟 1:獲取 API 密鑰

步驟 2:引入 SDK 依賴

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

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

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

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

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í)時(shí)間、重試次數(shù)等)
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        
        // 3. 調(diào)用通用文字識(shí)別(高精度版)
        HashMap<String, String> options = new HashMap<>();
        options.put("language_type", "CHN_ENG"); // 中英文混合
        options.put("detect_direction", "true"); // 檢測(cè)方向
        
        // 圖片路徑或二進(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é)果,提取識(shí)別文字
    private static void parseResult(JSONObject response) {
        if (response.has("words_result")) {
            JSONArray wordsArray = response.getJSONArray("words_result");
            System.out.println("識(shí)別結(jié)果:");
            for (int i = 0; i < wordsArray.length(); i++) {
                JSONObject wordObj = wordsArray.getJSONObject(i);
                System.out.println(wordObj.getString("words"));
            }
        } else {
            System.err.println("識(shí)別失敗:" + response.toString());
        }
    }
}

3. 接口說(shuō)明

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

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

免費(fèi)額度可在百度 AI 控制臺(tái)查看,超出需付費(fèi)。

兩種方案對(duì)比

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

注意事項(xiàng)

本地 Tesseract

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

百度 AI OCR

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

總結(jié)

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

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

相關(guān)文章

  • mybatis升級(jí)mybatis-plus時(shí)踩到的一些坑

    mybatis升級(jí)mybatis-plus時(shí)踩到的一些坑

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

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

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

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

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

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

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

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

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

    log4j2使用filter過(guò)濾日志方式

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

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

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

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

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

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

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

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

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

最新評(píng)論

志丹县| 玛纳斯县| 太谷县| 安顺市| 肥西县| 浦北县| 诸暨市| 惠东县| 滕州市| 五寨县| 沧州市| 蕲春县| 赤水市| 依兰县| 安阳县| 天门市| 冀州市| 中超| 晋城| 岫岩| 军事| 河南省| 奉新县| 缙云县| 营口市| 广元市| 长春市| 同仁县| 西峡县| 望江县| 丰都县| 灵丘县| 武城县| 富平县| 阳泉市| 寻乌县| 锦州市| 思茅市| 濉溪县| 锡林浩特市| 平舆县|