1. 接口说明

印刷文字识别,通过全球领先的 OCR(光学字符识别 Optical Character Recognition)技术,自动对文档 OCR 进行识别,返回文档上的纯文本信息,可以省去用户手动录入的过程, 并会返回图片中文字的坐标位置,方便二次开发。 自动完成文档 OCR 信息的采集,可以很方便对接客户的后台数据系统,给用户带来极大的便利。 该印刷文字识别接口支持语种包括:中(简体和繁体)、英、日、韩、德、法、意、葡、西、荷,接口会自动判断文字语种。

2. 接口地址

POST http://webapi.xfyun.cn/v1/service/v1/ocr/recognize_document HTTP/1.1
Content-Type:application/x-www-form-urlencoded; charset=utf-8

3. 请求参数

在 Http Request Header 中配置授权认证参数,见【接口描述-授权认证。 其中 X-Param 为各配置参数组成的JSON串经BASE64编码之后的字符串,原始JSON串各字段说明如下:

参数 类型 必须 说明 示例
engine_type string 引擎类型,固定为recognize_document recognize_document
imei string 手机序列号 12345678
osid string 操作系统版本 Android
ua string 厂商|全称|机型信息|操作系统版本|分辨率 vivo|vivoY67L|PD1612|ANDROID6.0|720*1280

X-Param生成示例:

原始JSON串:
{
    "engine_type": "recognize_document"
}
BASE64编码(即X-Param):
eyJlbmdpbmVfdHlwZSI6InJlY29nbml6ZV9kb2N1bWVudCJ9

在 Http Request Body 中配置以下参数:

参数 类型 必须 说明 示例
image string 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,仅支持jpg格式,推荐 jpg 文件设置为:尺寸 1024×768,图像质量 75 以上,位深度 24。 exSI6ICJlbiIsCgkgICAgInBvc2l0aW9uIjogImZhbHNlIgoJf...

注:要求文档图片最短边最小不低于 20 像素,最大不超过 4096 像素。另外base64编码后大小会增加约1/3。

4. 返回值

返回值为json串,各字段如下:

参数 类型 说明
code string 结果码(具体见错误码)
data json 详见data说明
desc string 描述
sid string 会话ID

其中sid字段主要用于追查问题,如果出现问题,可以提供sid给讯飞技术人员帮助确认问题。

data各字段说明如下:

字段名 说明
error_msg 引擎错误描述
error_code 引擎错误码
engine_cost 引擎识别耗时,以毫秒为单位
blocks 文字块
lines 文字行
characters 文本行下的characters字段表示文本行中每个字符的坐标、置信度、内容
char_centers 文本行下的char_centers字段表示文本行中每个字符的中心点位置
position 结果文本的位置信息
bounding_box 外接矩形的位置和大小
vertices 文本四个顶点的位置坐标,按照左上、右上、右下、坐下顺序排列
score 识别结果置信度
text 文本/字符内容
rotate_angle 倾斜的文本引擎会转正后识别,该字段表示文本块的旋转角度

其中的error_msg和error_code的取值范围及说明对照表:

error_code error_msg 说明
0 ok 正常返回
40001 invalid parameter 参数不对
40002 missing parameter 缺少参数
40003 invalid user or password 账号或密码不对
40004 missing request body 没有HTTP body
40005 invalid image format HTTP body不是图像或者不支持该格式
40006 invalid image size 图片太大或太小
40007 fail to recognize 识别失败
40008 invalid content type 通过HTTP form上传图片时,Content-Type无效
40009 corrupted request body 请求body损坏
40010 fail to extract image 提取图像裸数据失败
50001 backend down 后台服务器宕机
50004 timeout 识别超时
90099 unknown 未知错误

结果示例如下:

失败结果:

{
    "code": "10105",
    "desc": "illegal access|no auth",
    "data": "",
    "sid": "wcr00001fa6@dxe4290f1bcfdd6f2b00"
}

成功结果:

{
    "code": "0",
    "data": {
        "document": {
            "blocks": [
                {
                    "lines": [
                        {
                            "char_centers": [
                                {
                                    "x": 38,
                                    "y": 50
                                }
                            ],
                            "characters": [
                                {
                                    "position": {
                                        "bounding_box": {
                                            "height": 60,
                                            "left": 4,
                                            "top": 20,
                                            "width": 76
                                        },
                                        "vertices": [
                                            {
                                                "x": 4,
                                                "y": 20
                                            },
                                            {
                                                "x": 80,
                                                "y": 20
                                            },
                                            {
                                                "x": 80,
                                                "y": 80
                                            },
                                            {
                                                "x": 4,
                                                "y": 79
                                            }
                                        ]
                                    },
                                    "score": 0.9999853372573853,
                                    "text": "劲"
                                }
                            ],
                            "position": {
                                "bounding_box": {
                                    "height": 59,
                                    "left": 5,
                                    "top": 20,
                                    "width": 85
                                },
                                "vertices": [
                                    {
                                        "x": 5,
                                        "y": 21
                                    },
                                    {
                                        "x": 90,
                                        "y": 20
                                    },
                                    {
                                        "x": 90,
                                        "y": 79
                                    },
                                    {
                                        "x": 5,
                                        "y": 79
                                    }
                                ]
                            },
                            "score": 0.8800805807113648,
                            "text": "劲"
                        }
                    ],
                    "position": {
                        "bounding_box": {
                            "height": 59,
                            "left": 5,
                            "top": 20,
                            "width": 85
                        },
                        "vertices": [
                            {
                                "x": 5,
                                "y": 21
                            },
                            {
                                "x": 90,
                                "y": 20
                            },
                            {
                                "x": 90,
                                "y": 79
                            },
                            {
                                "x": 5,
                                "y": 79
                            }
                        ]
                    }
                }
            ],
            "rotate_angle": 0
        },
        "engine_cost": 52.37993240356445,
        "error_code": 0,
        "error_msg": "ok"
    },
    "desc": "success",
    "sid": "wcr00001bc3@dx2aab0f1bd0d56f1a00"
}

5. 调用示例

python2.7 脚本示例

说明:将脚本中IMAGE_PATH, API_KEY, APPID, 换成相应的图片路径,讯飞开放平台提供的apiKey,讯飞开放平台应用的appid即可,运行脚本可打印相应结果。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import urllib2
import time
import urllib
import json
import hashlib
import base64

def main():
    f = open("IMAGE_PATH", 'rb')
    file_content = f.read()
    base64_image = base64.b64encode(file_content)
    body = urllib.urlencode({'image': base64_image})

    url = 'http://webapi.xfyun.cn/v1/service/v1/ocr/recognize_document'
    api_key = 'API_KEY'
    param = {"engine_type": "recognize_document"}

    x_appid = 'APPID'
    x_param = base64.b64encode(json.dumps(param).replace(' ', ''))
    x_time = int(int(round(time.time() * 1000)) / 1000)
    x_checksum = hashlib.md5(api_key + str(x_time) + x_param).hexdigest()
    x_header = {'X-Appid': x_appid,
                'X-CurTime': x_time,
                'X-Param': x_param,
                'X-CheckSum': x_checksum}
    req = urllib2.Request(url, body, x_header)
    result = urllib2.urlopen(req)
    result = result.read()
    print result
    return

if __name__ == '__main__':
    main()
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-11-03 10:26:45

results matching ""

    No results matching ""