騰訊AI優圖AI開放平台 OCR Java SDK 下載
public class TencentAISDK { public static String genSignString(Map<String, String> parser) { String uri_str = ""; Map<String, String> map = new TreeMap<String, String>(); map.putAll(parser); Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); if (key.equalsIgnoreCase("app_key")) continue; String encode = ""; try { String value = parser.get(key); encode = URLEncoder.encode(value, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } uri_str = uri_str + key + "=" + encode + "&"; } String sign_str = uri_str + "app_key=" + parser.get("app_key"); System.out.println("-----urlencode_str:" + sign_str); sign_str = conVertTextToMD5(sign_str).toUpperCase(); System.out.println("-----sign_str:" + sign_str); return sign_str; } // 計算字符串的MD5 public static String conVertTextToMD5(String plainText) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } // 32位加密 return buf.toString(); // 16位的加密 // return buf.toString().substring(8, 24); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } public static Integer DateToTimestamp(Date time) { Timestamp ts = new Timestamp(time.getTime()); return (int) ((ts.getTime()) / 1000); } }
public class TencentSDKTest { public static void main(String[] args) { TencentAISDK tsdk = new TencentAISDK(); Map params = new HashMap<String, String>(); params.put("app_id", "11111111"); params.put("app_key", "111111111"); String time_string = String.valueOf(TencentAISDK.DateToTimestamp(new Date())); params.put("time_stamp", time_string); params.put("nonce_str", time_string); Base64ImgUtil imgutl = new Base64ImgUtil(); String base64 = Base64ImgUtil.GetImageStr("C:\\b84.jpg"); InputStream in = null; byte[] data = null; // 讀取圖片字節數組 try { in = new FileInputStream("C:\\b84.jpg"); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } Base64Util b64 = new Base64Util(); String b64str = b64.encode(data); params.put("image", b64str); params.put("sign", TencentAISDK.genSignString(params)); // 打開和URL之間的連接 try { HttpUtils util = new HttpUtils(); String result = HttpUtils.sendPostToOtherServer("https://api.ai.qq.com/fcgi-bin/ocr/ocr_generalocr", params); System.out.println("result:"+ result); } catch (Exception e) { e.printStackTrace(); } } }