证件识别

支持识别多个国家的身份证件,包括但不限于中国、泰国、新加坡、印尼、阿联酋、日本、埃及、瑞典等国家,身份证、护照、驾驶证、港澳台通行证等80多种证件关键字段的识别输出,基于深度学习识别算法,支持生僻字、繁体字的识别

支持多组并发,同时处理多个识别进程,支持在光照不均、边缘遮挡、不同拍摄角度等各种复杂环境下的精准识别,适用于线上实名认证、银行业务办理、旅行等需要识别证件信息的场景

标准化服务接口,方便与系统对接,支持私有云部署,企业可将证件识别功能部署到内网服务器上

购买API 私有化部署

功能演示

图片显示处
证件识别

图像建议:大小在200KB左右,位深度24以上。

扫描图像建议:分辨率为300DPI,小于3M。

证件类型
  • 身份证件
  • 驾照
  • 通行证
  • 国外证件
  • 其他
  • 二代身份证(照片页)
  • 二代身份证(国徽页)
  • 护照
  • 二代身份证(正副页自动分类)
  • 香港居民身份证(照片页)
  • 澳门居民身份证(照片页)
  • 临时身份证
  • 外国人永久居留身份证
  • 澳门蓝卡
  • 台湾身份证(照片页)
  • 台湾身份证(条码页)
  • 港澳台居民居住证正面
  • 港澳台居民居住证反面
  • 签证
  • 驾驶证(正页)
  • 驾驶证(副页)
  • 驾驶证(正副页自动分类)
  • 行驶证(正页)
  • 行驶证(副页)
  • 行驶证(正副页自动分类)
  • 身份证/行驶证/驾照(自动分类)
  • 电子驾照(正页)
  • 电子驾照(副页)
  • 电子行驶证
  • 港澳居民来往内地通行证(照片页)
  • 港澳居民来往内地通行证(机读码页)
  • 台湾居民来往大陆通行证 2015 版(照片页)
  • 台湾居民往来大陆通行证 2015版(机读码页)
  • 往来港澳通行证 2014 版(照片页)
  • 往来台湾通行证 2017 版(照片页)
  • 新加坡身份证 2004 版
  • 新加坡驾驶证
  • 马来西亚驾驶证
  • 马来西亚身份证(照片页)
  • 菲律宾身份证(照片页)
  • 墨西哥选民证背面(ABC)
  • 墨西哥选民证(ABC)
  • 泰国国民身份证
  • 印度尼西亚居民身份证
  • 印度尼西亚驾驶证
  • 日本驾驶证
  • 瑞典驾驶证
  • 美国加利福利亚驾驶证
  • 新西兰驾驶证
  • 香港入境小票
  • 户口本首页
  • 户口本
  • 军官证 1998 版
  • 厦门社会保障卡(照片页)
  • 福建社会保障卡(照片页)
  • 居住证(广东/广西/东莞)(照片页)
  • 深圳居住证
  • 台湾健保卡
  • 边民证(A)(照片页)
  • 边民证(B)(个人信息页)
  • 律师证(A)(信息页)
  • 律师证(B)(照片页)
本地上传
  • 结果
  • JSON数据
  • 接入数:

操作过于频繁,请输入验证码
x

按顺序填写与该色同色的验证码

API文档

一、图片为base64流
接口地址: https://netocr.com/api/recogliu.do
接口调用方法: post
接口接收参数:
序号 名称 类型 必填 说明
1 img String 上传的文件(图片的base64流)
2 key String 用户ocrKey
3 secret String 用户ocrSecrert
4 typeId Integer 识别类型(二代证2;行驶证6;驾照5;其他详见附录
5 format String 返回格式(xml或者json),如果format为空,则默认返回xml
二、图片为file格式
接口地址: https://netocr.com/api/recog.do
接口调用方法: post
接口接收参数:
序号 名称 类型 必填 说明
1 file MultipartFile 上传的文件(上传文件的字段名必须是“file”)
2 key String 用户ocrKey
3 secret String 用户ocrSecrert
4 typeId Integer 识别类型(二代证2;行驶证6;驾照5;其他详见附录
5 format String 返回格式(xml或者json),如果format为空,则默认返回xml
三、示例代码
  • Java
  • python
  • javascript
  • PHP
  • C#
  • C++
  • GO
  • Node.js
  • ios
  • Android

package com.test;

import okhttp3.*;
import org.json.JSONObject;
import java.io.*;
/**
 * 需要添加依赖
 * 
 * 
 *     com.squareup.okhttp3
 *     okhttp
 *     4.12.0
 * 
 */
class Sample {

	static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

	public static void main(String []args) throws IOException{
		MediaType mediaType = MediaType.parse("text/plain");
		RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
		  .addFormDataPart("img","/9j")
		  .addFormDataPart("key","M***********g")
		  .addFormDataPart("secret","3***********6")
		  .addFormDataPart("typeId","2")
		  .addFormDataPart("format","json")
		  .build();
		Request request = new Request.Builder()
		  .url("https://netocr.com/api/recogliu.do")
		  .method("POST", body)
		  .build();
		Response response = HTTP_CLIENT.newCall(request).execute();
		System.out.println(response.body().string());
	}
}

import requests
import json

def main():

    url = "https://netocr.com/api/recogliu.do"

    payload = {
	'img': '/9j',
    'key': 'M***********g',
    'secret': '3***********6',
    'typeId': '2',
    'format': 'json'
	}
    files=[

    ]
	headers = {}

    response = requests.request("POST", url, headers=headers, data=payload, files=files)

    print(response.text)

	if __name__ == '__main__':
	    main()

var form = new FormData();
form.append("img", "/9j");
form.append("key", "M***********g");
form.append("secret", "3***********6");
form.append("typeId", "2");
form.append("format", "json");

var settings = {
 "url": "https://netocr.com/api/recogliu.do",
 "method": "POST",
 "timeout": 0,
 "processData": false,
 "mimeType": "multipart/form-data",
 "contentType": false,
 "data": form
};

$.ajax(settings).done(function (response) {
 console.log(response);
});

<?php
class Sample {

	public function run() {
		$curl = curl_init();
		curl_setopt_array($curl, array(

			CURLOPT_URL => 'https://netocr.com/api/recogliu.do',
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => '',
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 0,
			CURLOPT_FOLLOWLOCATION => true,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => 'POST',
			CURLOPT_POSTFIELDS => array('img' => '/9j','key' => 'M***********g','secret' => '3***********6','typeId' => '2','format' => 'json'),

		));
		$response = curl_exec($curl);
        curl_close($curl);
        echo $response;
	}
}
$rtn = (new Sample())->run();
print_r($rtn);

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://netocr.com/api/recogliu.do");
var content = new MultipartFormDataContent();
content.Add(new StringContent("/9j"), "img");
content.Add(new StringContent("M***********g"), "key");
content.Add(new StringContent("3***********6"), "secret");
content.Add(new StringContent("2"), "typeId");
content.Add(new StringContent("json"), "format");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

#include 
#include 
#include 

int main() {
    // 创建 HTTP 客户端
    web::http::client::http_client client(U("https://netocr.com/api/recogliu.do"));

    // 构建请求内容
    web::http::multipart_content content;
    content.add(web::http::name(U("img")), web::http::value(U("/9j")));
    content.add(web::http::name(U("key")), web::http::value(U("M***********g")));
    content.add(web::http::name(U("secret")), web::http::value(U("3***********6")));
    content.add(web::http::name(U("typeId")), web::http::value(U("2")));
    content.add(web::http::name(U("format")), web::http::value(U("json")));

    // 创建 HTTP 请求
    web::http::http_request request(web::http::methods::POST);
    request.headers().set_content_type(U("multipart/form-data; boundary=") + content.boundary());
    request.set_body(content);

    // 发送请求并获取响应
    web::http::http_response response = client.request(request).get();

    // 确保请求成功
    if (response.status_code() == web::http::status_codes::OK) {
        // 读取响应内容
        std::wstring responseString = response.extract_string().get();
        std::wcout << "Response: " << responseString << std::endl;
    } else {
        std::cerr << "Request failed with status code " << response.status_code() << std::endl;
    }
    return 0;
}

package main

import (
  "fmt"
  "bytes"
  "mime/multipart"
  "net/http"
  "io/ioutil"
)

func main() {
    url := "https://netocr.com/api/recogliu.do"
    method := "POST"

    payload := &bytes.Buffer{}
    writer := multipart.NewWriter(payload)
    _ = writer.WriteField("img", "/9j")
    _ = writer.WriteField("key", "M***********g")
    _ = writer.WriteField("secret", "3***********6")
    _ = writer.WriteField("typeId", "2")
    _ = writer.WriteField("format", "json")
    err := writer.Close()
    if err != nil {
     fmt.Println(err)
     return
    }

    client := &http.Client { }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
     fmt.Println(err)
     return
    }
    req.Header.Set("Content-Type", writer.FormDataContentType())
    res, err := client.Do(req)
    if err != nil {
     fmt.Println(err)
     return
    }
    defer res.Body.Close()

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
     fmt.Println(err)
     return
    }
    fmt.Println(string(body))
}

var request = require('request');
var options = {
   'method': 'POST',
   'url': 'https://netocr.com/api/recogliu.do',
   'headers': {
   },
   formData: {
     'img': '/9j',
     'key': 'M***********g',
     'secret': '3***********6',
     'typeId': '2',
     'format': 'json'
   }
};
request(options, function (error, response) {
   if (error) throw new Error(error);
   console.log(response.body);
});

import Alamofire

class Sample {

    func performNetworkRequest() {
        let parameters: [String: Any] = [
            "img": "/9j",
            "key": "M***********g",
            "secret": "3***********6",
            "typeId": "2",
            "format": "json"
        ]

        AF.request("https://netocr.com/api/recogliu.do", method: .post, parameters: parameters)
            .response { response in
                switch response.result {
                case .success(let responseData):
                    if let data = responseData {
                        let responseString = String(data: data, encoding: .utf8)
                        print("Response: \(responseString ?? "")")
                    }
                case .failure(let error):
                    print("Error: \(error.localizedDescription)")
                }
            }
    }
}
let sample = Sample()
sample.performNetworkRequest()
	

import android.util.Log;
import okhttp3.*;
import java.io.IOException;

public class Sample {

    private static final OkHttpClient HTTP_CLIENT = new OkHttpClient.Builder().build();

    public static void performNetworkRequest() {
        MediaType mediaType = MediaType.parse("text/plain");
        RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("img", "/9j")
                .addFormDataPart("key", "M***********g")
                .addFormDataPart("secret", "3***********6")
                .addFormDataPart("typeId", "2")
                .addFormDataPart("format", "json")
                .build();
        Request request = new Request.Builder()
                .url("https://netocr.com/api/recogliu.do")
                .method("POST", body)
                .build();

        HTTP_CLIENT.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("Sample", "Error: " + e.getMessage());
                // 处理请求失败情况
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    String responseData = response.body().string();
                    // 在这里处理响应结果
                    Log.d("Sample", "Response: " + responseData);
                } else {
                    Log.e("Sample", "Response code: " + response.code());
                    // 处理响应失败情况
                }
            }
        });
    }
}
	
查看详细API介绍

交易记录

图片显示处

请登录后体验

确定 取消