文字识别

    保单识别

    接口描述

    支持对保险单中的投保人、被保人、受益人的各项信息及保费、保险种类等字段进行识别,暂支持识别各类人身保险保单

    请求说明

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents

    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格式
    kv_business string true/false 是否进行商业逻辑处理,true:进行商业逻辑处理,false:不进行商业逻辑处理,默认true

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    curl -i -k 'https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    保单识别
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"image":img}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    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 InsuranceDocuments {
    
        /**
        * 重要提示代码中所需工具类
        * 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 insuranceDocuments() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents";
            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) {
            InsuranceDocuments.insuranceDocuments();
        }
    }
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents";
    static std::string insuranceDocuments_result;
    /**
    * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
    * @param 参数定义见libcurl文档
    * @return 返回值定义见libcurl文档
    */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        insuranceDocuments_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
    * 保单识别
    * @return 调用成功返回0,发生错误返回其他错误码
    */
    int insuranceDocuments(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = insuranceDocuments_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    <?php
    /**
    * 发起http post请求(REST API), 并获取REST请求的结果
    * @param string $url
    * @param string $param
    * @return - http response body if succeeds, else false.
    */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'image' => $img
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class InsuranceDocuments
        {
            // 保单识别
            public static string insuranceDocuments()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/ocr/v1/insurance_documents?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "image=" + HttpUtility.UrlEncode(base64);
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("保单识别:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 唯一的log id,用于问题定位
    words_result_num uint32 识别结果数,表示words_result的元素个数
    words_result object{} 识别结果
    BenPerLst array[] 受益人信息
    BenCltNa string 受益人姓名
    BenPerPro string 受益比例
    BenPerOrd string 受益顺序
    BenPerTyp string 受益人类型
    InsBilCom string 公司名称
    InsBilNo string 保险单号码
    InsBilTim string 保单生效日期
    InsCltGd1 string 投保人性别
    InsCltNa1 string 投保人
    InsIdcNb1 string 投保人证件号码
    InsIdcTy1 string 投保人证件类型
    InsPerLst array[] 被保人信息
    InsCltGd2 string 被保人性别
    InsCltNa2 string 被保险人
    InsBthDa2 string 被保险人出生日期
    InsIdcNb2 string 被保险人证件号码
    InsIdcTy2 string 被保险人证件类型
    InsPrdList array[] 保险信息
    InsCovDur string 保险期限
    InsIcvAmt string 基本保险金额
    InsPayDur string 交费期间
    InsPayFeq string 缴费频率
    InsPerAmt string 每期交费金额
    InsPrdNam string 产品名称

    返回示例

    {
        "log_id": 5095868850706015333,
        "words_result_num": 11,
        "words_result": {
            "InsBilTim": "2015-02-16",
            "InsBthDa1": "1984-12-05",
            "InsTolAmt": "5000.00",
            "InsBilNo": "802600004350",
            "InsIdcTy1": "身份证",
            "InsIdcNb1": "43028119841205",
            "InsPerLst": [
                {
                    "InsIdcTy2": "身份证",
                    "InsCltNa2": "孙小宝",
                    "InsIdcNb2": "430281199411054326",
                    "InsBthDa2": "1994-11-05"
                }
            ],
            "InsCltNa1": "孙小宝",
            "InsPrdList": [
                {
                    "InsPayFeq": "年交",
                    "InsPerAmt": "5000.00",
                    "InsPayDur": "5年",
                    "InsCovDur": "20年",
                    "InsPrdNam": "阳光人寿阳光康瑞年金保险",
                    "InsIcvNum": "5"
                },
                {
                    "InsCovDur": "1年",
                    "InsPayFeq": "趸交",
                    "InsIcvAmt": "375000.00",
                    "InsPayDur": "1年",
                    "InsPrdNam": "阳光人寿附加阳光康瑞重大疾病保险"
                }
            ],
            "BenPerLst": [
                {
                    "BenPerTyp": "身故保险金受益人",
                    "BenPerPro": "100%",
                    "BenCltNa": "陈"
                }
            ],
            "InsBilCom": "阳光人寿保险股份有限公司"
        }
    }
    上一篇
    病案首页识别
    下一篇
    汽车场景文字识别