从身份证图片获取文字信息

      最近信息公司有个项目,需要收集商户的身份信息。当时考虑把功能做在微信里面代替做在app里面,app需要开发二个平台之外还要考虑各种手机版本的问题,甚是繁琐。但是由于购买的身份证读卡器,只有安卓和IOS版本的SDK,没有可以支持微信的SDK,所以只能把开发外包出去做在APP上面。

     这二天看了一个阿凡达数据API接口,功能还算强大,完全能满足直接拍照身份证获取身份证中的信息,并且还有接口可以做身份证校验处理。唯一遗憾的是接口基本上都是收费的,如果不是商用的话,费用太贵。

     实现方式比较简单,首先把图片转换成base64编码字符串。

   

/**
	 * 将图片转换为BASE64加密字符串.
	 *
	 * @param imagePath
	 *            图片路径.
	 * @param format
	 *            图片格式.
	 * @return
	 */
	public static String convertImageToByte(String imagePath, String format) {
		BASE64Encoder encoder = new BASE64Encoder();
		File file = new File(imagePath);
		BufferedImage bi = null;
		ByteArrayOutputStream baos = null;
		String result = null;
		try {
			bi = ImageIO.read(file);
			baos = new ByteArrayOutputStream();
			ImageIO.write(bi, format == null ? "jpg" : format, baos);
			byte[] bytes = baos.toByteArray();
			result = encoder.encode(bytes).trim();
			System.out.println("将图片转换为BASE64加密字符串成功!"+result);
		} catch (IOException e) {
			System.out.println("将图片转换为 BASE64加密字符串失败: " + e);
		} finally {
			try {
				if (baos != null) {
					baos.close();
					baos = null;
				}
			} catch (Exception e) {
				System.out.println("关闭文件流发生异常: " + e);
			}
		}
		return result;
	}

 

          把对应的URL和编码传入,就可以返回对应身份证的JSON字符串。

  

private static void httpUrlConnection(String pathUrl, String base64Str) {
		try {
			    String param=  "key=6766ee9f3dfd4297868bcf024ea68c49&pic_ext=jpg&bas64String="+ base64Str ;		    //建立连接
			    URL url=new URL(pathUrl);
			    HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();
			    //设置参数
			    httpConn.setDoOutput(true);   //需要输出
			    httpConn.setDoInput(true);   //需要输入
			    httpConn.setUseCaches(false);  //不允许缓存
			    httpConn.setRequestMethod("POST");   //设置POST方式连接
			    //设置请求属性
			    httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
			    httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
			    httpConn.setRequestProperty("Charset", "UTF-8");
			    //连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect
			    httpConn.connect();
			    //建立输入流,向指向的URL传入参数
			    DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());
			    dos.writeBytes(param);
			    dos.flush();
			    dos.close();
			    //获得响应状态
			    int resultCode=httpConn.getResponseCode();
			    if(HttpURLConnection.HTTP_OK==resultCode){
			      StringBuffer sb=new StringBuffer();
			      String readLine=new String();
			      BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
			      while((readLine=responseReader.readLine())!=null){
			        sb.append(readLine).append("\n");
			      }
			      responseReader.close();
			      System.out.println(sb.toString());
			    }

		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

        对应JSON的格式:

    

{"result":{"nation":"汉","number":"330782198410185315","name":"xx阳","address":"浙江省XXXXXXX溪村4组","sex":"男"},"error_code":0,"reason":"Succes"}

 

   

   

你可能感兴趣的:(API)