1. 程式人生 > 實用技巧 >Java,百度OCR通用文字識別(高精度版)

Java,百度OCR通用文字識別(高精度版)

背景

  公司業務需要大量的識別圖片,所以採用百度的API

介面描述

在通用文字識別的基礎上,提供更高精度的識別服務,支援更多語種識別(丹麥語、荷蘭語、馬來語、瑞典語、印尼語、波蘭語、羅馬尼亞語、土耳其語、希臘語、匈牙利語),並將字型檔從1w+擴充套件到2w+,能識別所有常用字和大部分生僻字

請求說明

請求示例

HTTP 方法:POST

請求URL:https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic

URL引數:

引數
access_token 通過API Key和Secret Key獲取的access_token,參考“Access Token獲取

Header如下:

引數
Content-Type application/x-www-form-urlencoded

Body中放置請求引數,引數詳情如下:

請求引數

引數是否必選型別可選值範圍說明
image string - 影象資料,base64編碼後進行urlencode,要求base64編碼和urlencode後大小不超過4M,最短邊至少15px,最長邊最大4096px,支援jpg/jpeg/png/bmp格式
language_type string auto_detect
CHN_ENG
ENG
JAP
KOR
FRE
SPA
POR
GER
ITA
RUS
DAN
DUT
MAL
SWE
IND
POL
ROM
TUR
GRE
HUN
識別語言型別,預設為CHN_ENG
可選值包括:
- auto_detect:自動檢測語言,並識別
- CHN_ENG:中英文混合
- ENG:英文
- JAP:日語
- KOR:韓語
- FRE:法語
- SPA:西班牙語
- POR:葡萄牙語
- GER:德語
- ITA:義大利語
- RUS:俄語
- DAN:丹麥語
- DUT:荷蘭語
- MAL:馬來語
- SWE:瑞典語
- IND:印尼語
- POL:波蘭語
- ROM:羅馬尼亞語
- TUR:土耳其語
- GRE:希臘語
- HUN:匈牙利語
detect_direction string true/false 是否檢測影象朝向,預設不檢測,即:false。朝向是指輸入影象是正常方向、逆時針旋轉90/180/270度。可選值包括:
- true:檢測朝向;
- false:不檢測朝向
paragraph string true/false 是否輸出段落資訊
probability string true/false 是否返回識別結果中每一行的置信度

請求程式碼示例

package com.baidu.ai.aip;

import com.baidu.ai.aip.utils.Base64Util;
import com.baidu.ai.aip.utils.FileUtil;
import com.baidu.ai.aip.utils.HttpUtil;

import java.net.URLEncoder;

/**
* 通用文字識別(高精度版)
*/
public class AccurateBasic {

    /**
    * 重要提示程式碼中所需工具類
    * FileUtil,Base64Util,HttpUtil,GsonUtils請從
    * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
    * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
    * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
    * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
    * 下載
    */
    public static String accurateBasic() {
        // 請求url
        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
        try {
            // 本地檔案路徑
            String filePath = "[本地檔案路徑]";
            byte[] imgData = FileUtil.readFileByBytes(filePath);
            String imgStr = Base64Util.encode(imgData);
            String imgParam = URLEncoder.encode(imgStr, "UTF-8");

            String param = "image=" + imgParam;

            // 注意這裡僅為了簡化編碼每一次請求都去獲取access_token,線上環境access_token有過期時間, 客戶端可自行快取,過期後重新獲取。
            String accessToken = "[呼叫鑑權介面獲取的token]";

            String result = HttpUtil.post(url, accessToken, param);
            System.out.println(result);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        AccurateBasic.accurateBasic();
    }
}