访问 https://cloud.baidu.com/product/ocr/general 可以先体验一下百度的 OCR 文字识别,在功能演示
处上传一个含有文字的图片就可以看到识别效果,还是挺不错的,接下来就介绍使用 OCR 服务的编程实现:
点击立即使用
点击创建应用
(需要登陆)
得到应用 API Key
和 Secret Key
(在程序中需要使用,对应程序中的 APP_ID
和 APP_KEY
)
使用 API Key
和 Secret Key
换取 access_token
,请参考鉴权认证机制
使用 OCR 服务识别图片中的文字,请参考通用文字识别
下面给出 Java 的实现以供参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import com.alibaba.fastjson.JSONObject; import com.mzlion.easyokhttp.HttpClient;
import java.io.IOException;
public class BaiduOcr { private static final String APP_ID = "k364IHWiCdW1gZtL6eKfNRqM"; private static final String APP_KEY = "2sGL1HlcoYDaStLiCrsEiNRqHbDQEWax"; private static final String ACCESS_TOKEN = "24.2f86da893aacea8f1af0063ccdf02858.2592000.1520561223.282335-10804628";
public static void main(String[] args) throws IOException { String json = detectText("/Users/Biao/Desktop/y.png"); System.out.println(json); }
public static String detectText(String path) throws IOException { String image = ImageBase64Utils.imageToBase64String(path); int startIndex = image.indexOf(",") + 1; image = image.substring(startIndex);
String response = HttpClient.post("https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic") .param("access_token", ACCESS_TOKEN) .param("image", image) .execute().asString(); return response; }
public static String requestAccessToken() { String response = HttpClient.post("https://aip.baidubce.com/oauth/2.0/token") .param("grant_type", "client_credentials") .param("client_id", APP_ID) .param("client_secret", APP_KEY) .execute().asString(); JSONObject tokenObject = JSONObject.parseObject(response); return tokenObject.get("access_token").toString(); } }
|
依赖了下面的库: