OCR文字识别 - docai.xueersi.com

21
HI,您好,欢迎使用学而思网校AI开放平台 OCR文字识别 接口服务。 本文档主要针对需要集成HTTP API的技术研发工程师,详细描述 OCR文字识别 能力相关的技术内容。您可以通过 快速接入 安全接入 使用此AI能力。 接口名称 接口能力简要描述 api 地址 OCR文字识别 检测上传图像中的文字,进行 AI 文字识别 http://openapiai.xueersi.com/v1/api/img/ocr/genera 任意操作系统,任意编程语言,均可以通过http或https调用本接口。 图像数据支持两种形式发送: URL 网络上的图片 URL 地址 图片数据 请求图片需经过base64编码:图片的base64编码指将一副图片编码成字符串数据,便于网络传输请求。您可以首先得到图片的二进制,进行base64编码后,然后再进行urlen 转码方式可参考 base64示例 注意 : 图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) 图片大小 不能大于4MB 长边不能超过4096px 短边不能小于15px 图像数据支持以下原生类型: jpg png jpeg bmp 目前,OCR识别接口服务支持多种类型文字,包括: OCR文字识别 简介 接口能力 适用范围 图像发送方式 图像类型支持 文字识别范围

Transcript of OCR文字识别 - docai.xueersi.com

Page 1: OCR文字识别 - docai.xueersi.com

HI,您好,欢迎使用学而思网校AI开放平台OCR文字识别接口服务。

本文档主要针对需要集成HTTP API的技术研发工程师,详细描述OCR文字识别能力相关的技术内容。您可以通过快速接入或安全接入使用此AI能力。

接口名称 接口能力简要描述 api 地址

OCR文字识别 检测上传图像中的文字,进行 AI 文字识别 http://openapiai.xueersi.com/v1/api/img/ocr/general

任意操作系统,任意编程语言,均可以通过http或https调用本接口。

图像数据支持两种形式发送:URL 网络上的图片 URL 地址

图片数据 请求图片需经过base64编码:图片的base64编码指将一副图片编码成字符串数据,便于网络传输请求。您可以首先得到图片的二进制,进行base64编码后,然后再进行urlencode(注意你所使用的网络工具或网络库有没有默认的urlencode功能,如果没有,需要你自己显式转化)。转码方式可参考base64示例。

注意: 图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

图片大小 不能大于4MB长边不能超过4096px短边不能小于15px

图像数据支持以下原生类型:jpgpngjpegbmp

目前,OCR识别接口服务支持多种类型文字,包括:

1. 中文打印体识别2. 英文打印体识别3. 表格识别4. 拼音识别

OCR文字识别简介

接口能力

适用范围图像发送方式

图像类型支持

文字识别范围

Page 2: OCR文字识别 - docai.xueersi.com

请求 URL:http://openapiai.xueersi.com/v1/api/img/ocr/general

Header 如下:

参数名 赋值Content-Type application/x-www-form-urlencoded

 

在请求 API 的 post 请求参数中含有图片url地址或base64字符。url地址 或 base64 字符作为参数传递时,需要把 中文 以及 '/' 做一下编码,防止解析中出现歧义,从而符合url的规范。

将中文 以及 '/'  转换为百分号编码形式,这就是 urlencode 格式化操作。

 

参数名 类型 是否必选 赋值说明 样例 备注

app_key string 是 应用标识 8102b22a5e81e840176d9f381ec6f837 

img string

是 图像数据 https://i.loli.net/2019/03/22/5c94684fad743.jpg或 图像 base64数据:示例数据较长,见附件base64.txt

图像base64字符串 / 图像URL

img_type string 是 图像形式 URL base64 / URL

recog_formula int 否 是否识别公式 0 -识别 | 1-不识别  ,默认0  

请求方式HTTP 方法:POST

注意: Content-Type为application/x-www-form-urlencoded,然后通过urlencode格式化请求体。

urlencode介绍

部分语言的第三方包内部做了 urlencode 编码,不进行 urlencode 格式化也可以正常进行 API 请求,但    是进行 urlencode 格式化之后,一定可以通过请求。所以我们推荐您对请求体中的参数进行 urlencode 操作。

快速接入方式请求参数详情

Page 3: OCR文字识别 - docai.xueersi.com

HTTP 代码示例:

cURL 代码示例:

PHP 代码示例:

请求代码示例POST /v1/api/img/ocr/general HTTP/1.1

Host: openapiai.xueersi.com

Content-Type: application/x-www-form-urlencodedcache-control: no-cache

app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3a%2f%2fi.loli.net%2f2019%2f03%2f22%2f5c94684fad743.jpg&img_type=URL

curl -X POST \

http://openapiai.xueersi.com/v1/api/img/ocr/general \ -H 'Content-Type: application/x-www-

form-urlencoded' \

-H 'cache-control: no-cache' \ -d

'app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3a%2f%2fi.loli.net%2f2019%2f03%2f22%2f5c94684fad743.jpg&img_type=URL'

PHP DEMO Quick下载

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL =>

"http://openapiai.xueersi.com/v1/api/img/ocr/general",

CURLOPT_RETURNTRANSFER => true,

CURLOPT_ENCODING => "",

CURLOPT_MAXREDIRS => 10,

CURLOPT_TIMEOUT => 30,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS =>

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3a%2f%2fi.loli.net%2f2019%2f03%2f22%2f5c94684fad743.jpg&img_type=URL",

CURLOPT_HTTPHEADER => array(

"Content-Type: application/x-www-form-urlencoded",

"cache-control: no-cache"

),

Page 4: OCR文字识别 - docai.xueersi.com

Python(Python3) 代码示例:

URL传参方式:

base64传参方式:

));

$response = curl_exec($curl);

$err = curl_error($curl);

curl_close($curl);

if ($err) {

echo "cURL Error #:" . $err;

} else {

echo $response;

}

import http.client

conn = http.client.HTTPConnection("openapiai.xueersi.com")

payload =

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL"

headers = {

'Content-Type': "application/x-www-form-urlencoded",

'cache-control': "no-cache",

}

conn.request("POST", "/v1/api/img/ocr/general/", payload, headers)

res = conn.getresponse()

data = res.read()

#python2.7

#print(data)

#python3.6

print(data.decode("utf-8"))conn.close()

import http.client

import urllib

import base64

from urllib import quote

with open('./test.jpg', 'rb') as bin_data:

Page 5: OCR文字识别 - docai.xueersi.com

C++(LibCurl) 代码示例:

Java 代码示例:

image_data = bin_data.read()image_data_base64 = base64.b64encode(image_data)

image_data_base64 = quote(image_data_base64)conn =

http.client.HTTPConnection("openapiai.xueersi.com")appkey_string =

'app_key=8102b22a5e81e840176d9f381ec6f837'img_string = 'img=' + image_data_base64

img_type_string = 'img_type=base64'payload = appkey_string + '&' + img_string + '&' +

img_type_string

headers = {

'Content-Type': "application/x-www-form-urlencoded",

'cache-control': "no-cache",

}

conn.request("POST", "/v1/api/img/ocr/general/", payload, headers)res = conn.getresponse()

data = res.read()

print(data.decode("utf-8"))conn.close()

C++ DEMO下载

以上 C++ DEMO 依赖 libcurl 库。参考链接:https://curl.haxx.se/libcurl/features.html#thread

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(hnd, CURLOPT_URL,

"http://openapiai.xueersi.com/v1/api/img/ocr/general");

struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "cache-control: no-

cache");headers = curl_slist_append(headers, "Content-Type: application/x-www-form-

urlencoded");

curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS,

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3a%2f%2fi.loli.net%2f2019%2f03%2f22%2f5c94684fad743.jpg&img_type=URL");

CURLcode ret = curl_easy_perform(hnd);

Page 6: OCR文字识别 - docai.xueersi.com

JavaScript 代码示例:

Andriod DEMO下载

public static void QuickConnect(){

new Thread(new Runnable() {

@Override

public void run() {

try { Map<String, String> params = new HashMap<String,

String>(); params.put("app_key",

"8102b22a5e81e840176d9f381ec6f837");

params.put("img","https://i.loli.net/2019/03/22/5c94684fad743.jpg");

params.put("img_type","URL");

Log.i(TAG,"start post"); String result =

HttpUtil.sendPostMessage(params,"utf-8"); System.out.println("result-

>"+result);

}catch(Exception e)

{

e.printStackTrace();

}

}

}).start();

}

JavaScript DEMO Quick下载

var settings = {

"async": true,

"crossDomain": true,

"url": "http://openapiai.xueersi.com/v1/api/img/ocr/general",

"method": "POST",

"headers": {

"Content-Type": "application/x-www-form-urlencoded",

Page 7: OCR文字识别 - docai.xueersi.com

Go 代码示例:

C# 代码示例:

"cache-control": "no-cache",

},

"data": {

"app_key": "8102b22a5e81e840176d9f381ec6f837", "img":

"https://ai.xueersi.com/textRecognition/images/22.jpg",

"img_type": "URL"

}

}

$.ajax(settings).done(function (response) {

console.log(response);

});

package main

import (

"fmt"

"strings"

"net/http"

"io/ioutil"

)

func main() {

url := "http://openapiai.xueersi.com/v1/api/img/ocr/general"

payload :=

strings.NewReader("app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/x-www-form-urlencoded")req.Header.Add("cache-

control", "no-cache")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()

body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)

fmt.Println(string(body))

}

Page 8: OCR文字识别 - docai.xueersi.com

C# DEMO下载

using System;

using System.IO;

using System.Net;

using System.Text;

namespace ConsoleApp1

{

class Program

{

static void Main(string[] args)

{

string celerityPost = CelerityPost(); Console.WriteLine("快速接入方式:\n" +

celerityPost);

Console.ReadLine();

}

private static string CelerityPost()

{ string url =

"http://openapiai.xueersi.com/v1/api/img/ocr/general";//URL地址 string payload =

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL";

CookieContainer cookieContainer = new CookieContainer();

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

webRequest.ContentLength = Encoding.UTF8.GetByteCount(payload);

webRequest.ContentType = "application/x-www-form-urlencoded";//Content-Type

webRequest.CookieContainer = cookieContainer; webRequest.Method =

"post";

Stream request = webRequest.GetRequestStream(); StreamWriter

streamWriter = new StreamWriter(request, Encoding.GetEncoding("gb2312"));

streamWriter.Write(payload);

streamWriter.Close(); HttpWebResponse response =

(HttpWebResponse)webRequest.GetResponse(); response.Cookies =

cookieContainer.GetCookies(response.ResponseUri); Stream returnStream =

response.GetResponseStream(); StreamReader streamReader = new

StreamReader(returnStream, Encoding.GetEncoding("utf-8")); string endResult =

streamReader.ReadToEnd();//返回结果

Page 9: OCR文字识别 - docai.xueersi.com

微信小程序 代码示例:

iOS 代码示例:

streamReader.Close();

returnStream.Close();

return endResult;

}

}

}

wx.request({

url: 'http://openapiai.xueersi.com/v1/api/img/ocr/general',

method: "post",

data:

{

app_key: "8102b22a5e81e840176d9f381ec6f837", img:

"https://ai.xueersi.com/textRecognition/images/22.jpg",

img_type: "URL",

},

header: {

"content-type": "application/x-www-form-urlencoded",

},

success(res) {

console.log(res.data)

}

})

iOS DEMO下载

NSURLSession *session = [NSURLSession sharedSession];NSString *urlStr =

@"http://openapiai.xueersi.com/v1/api/img/ocr/general";NSURL *url = [NSURL

URLWithString:urlStr];NSMutableURLRequest *request = [NSMutableURLRequest

requestWithURL:url];

request.HTTPMethod = @"POST";NSString *app_key = @"app_key=8102b22a5e81e840176d9f381ec6f837";

Page 10: OCR文字识别 - docai.xueersi.com

参数名 类型 是否必选 赋值说明 样例 备注app_key string 是 应用标识 8102b22a5e81e840176d9f381ec6f837 

time_stamp string 是 秒级时间戳 1493468759 安全接入必备,用于唯一地标识某一刻的时间

nonce_str string 是 随机字符串 dd599ef889859f9fe 安全接入必备

sign string 是 签名信息 99880aabb33f4def5c875875b6bdc3b1安全接入必备

img string

是 图像数据 https://ai.xueersi.com/textRecognition/images/22.jpg或 图像 base64数据:示例数据较长,见附件base64.txt

图像base64字符串 / 图像URL

img_type string 是 图像形式 URL base64 / URL

recog_formula int 否 是否识别公式 0 -识别 | 1-不识别  ,默认0  

HTTP 代码示例:

cURL 代码示例:

NSString *img = @"img=https://ai.xueersi.com/textRecognition/images/22.jpg";NSString

*img_type = @"img_type=URL";NSString *paramsStr = [NSString stringWithFormat:@"%@&%@&%@",

app_key, img, img_type];request.HTTPBody = [paramsStr

dataUsingEncoding:NSUTF8StringEncoding];[request setValue:@"application/x-www-form-

urlencoded" forHTTPHeaderField:@"Content-Type"];NSURLSessionDataTask *dataTask = [session

dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse *

_Nullable response, NSError * _Nullable error) { NSDictionary *dict =

[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

NSLog(@"result=%@",dict);

}];

[dataTask resume];

安全接入方式请求参数详情

请求代码示例POST /v1/api/img/ocr/general HTTP/1.1

Host: openapiai.xueersi.com

Content-Type: application/x-www-form-urlencodedcache-control: no-cache

app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a

curl -X POST \

http://openapiai.xueersi.com/v1/api/img/ocr/general \ -H 'Content-Type: application/x-www-

Page 11: OCR文字识别 - docai.xueersi.com

PHP 代码示例:

Python(Python3) 代码示例:

URL传参方式:

form-urlencoded' \

-H 'cache-control: no-cache' \ -d

'app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a'

PHP DEMO下载

<?php

$curl = curl_init();

curl_setopt_array($curl, array( CURLOPT_URL =>

"http://openapiai.xueersi.com/v1/api/img/ocr/general",

CURLOPT_RETURNTRANSFER => true,

CURLOPT_ENCODING => "",

CURLOPT_MAXREDIRS => 10,

CURLOPT_TIMEOUT => 30,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS =>

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a",

CURLOPT_HTTPHEADER => array(

"Content-Type: application/x-www-form-urlencoded",

"cache-control: no-cache"

),

));

$response = curl_exec($curl);

$err = curl_error($curl);

curl_close($curl);

if ($err) {

echo "cURL Error #:" . $err;

} else {

echo $response;

}

Page 12: OCR文字识别 - docai.xueersi.com

base64传参方式:

import http.client

conn = http.client.HTTPConnection("openapiai.xueersi.com")

payload =

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a"

headers = {

'Content-Type': "application/x-www-form-urlencoded",

'cache-control': "no-cache",

}

conn.request("POST", "/v1/api/img/ocr/general/", payload, headers)

res = conn.getresponse()

data = res.read()

#python2.7

#print(data)

#python3.6

print(data.decode("utf-8"))conn.close()

import http.client

import urllib

import base64

from urllib import quote

with open('./test.jpg', 'rb') as bin_data:

image_data = bin_data.read()image_data_base64 = base64.b64encode(image_data)

image_data_base64 = quote(image_data_base64)conn =

http.client.HTTPConnection("openapiai.xueersi.com")appkey_string =

'app_key=8102b22a5e81e840176d9f381ec6f837'img_string = 'img=' + image_data_base64

img_type_string = 'img_type=base64'payload = appkey_string + '&' + img_string + '&' +

img_type_string +

'&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a'

headers = {

'Content-Type': "application/x-www-form-urlencoded",

'cache-control': "no-cache",

}

conn.request("POST", "/v1/api/img/ocr/general/", payload, headers)res = conn.getresponse()

data = res.read()

Page 13: OCR文字识别 - docai.xueersi.com

C++(LibCurl) 代码示例:

Java 代码示例:

print(data.decode("utf-8"))conn.close()

C++ DEMO下载

以上 C++ DEMO 依赖 libcurl 库。参考链接:https://curl.haxx.se/libcurl/features.html#thread

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(hnd, CURLOPT_URL,

"http://openapiai.xueersi.com/v1/api/img/ocr/general");

struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "cache-control: no-

cache");headers = curl_slist_append(headers, "Content-Type: application/x-www-form-

urlencoded");

curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS,

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a");

CURLcode ret = curl_easy_perform(hnd);

Andriod DEMO下载

Page 14: OCR文字识别 - docai.xueersi.com

JavaScript 代码示例:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");RequestBody body

= RequestBody.create(mediaType,

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a");

Request request = new Request.Builder()

.url("http://openapiai.xueersi.com/v1/api/img/ocr/general")

.post(body)

.addHeader("Content-Type", "application/x-www-form-urlencoded") .addHeader("cache-

control", "no-cache")

.build();

Response response = client.newCall(request).execute();

JavaScript DEMO下载

var settings = {

"async": true,

"crossDomain": true,

"url": "http://openapiai.xueersi.com/v1/api/img/ocr/general",

"method": "POST",

"headers": {

"Content-Type": "application/x-www-form-urlencoded",

"cache-control": "no-cache",

},

"data": {

"app_key": "8102b22a5e81e840176d9f381ec6f837", "img":

"https://ai.xueersi.com/textRecognition/images/22.jpg",

"img_type": "URL",

"time_stamp": "1551174536",

"nonce_str": "W8FI8oCp",

"sign": "c08d8f9900479a3b2a348c1d7dc7e918e71be66a"

}

}

$.ajax(settings).done(function (response) {

Page 15: OCR文字识别 - docai.xueersi.com

Go 代码示例:

C# 代码示例:

console.log(response);

});

package main

import (

"fmt"

"strings"

"net/http"

"io/ioutil"

)

func main() {

url := "http://openapiai.xueersi.com/v1/api/img/ocr/general"

payload :=

strings.NewReader("app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/x-www-form-urlencoded")req.Header.Add("cache-

control", "no-cache")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()

body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)

fmt.Println(string(body))

}

C# DEMO下载

using System;

using System.IO;

using System.Net;

using System.Text;

namespace ConsoleApp1

Page 16: OCR文字识别 - docai.xueersi.com

微信小程序 代码示例:

{

class Program

{

static void Main(string[] args)

{

string safetyPost = SafetyPost(); Console.WriteLine("安全接入方式:\n" +

safetyPost);

Console.ReadLine();

}

private static string SafetyPost()

{ string url =

"http://openapiai.xueersi.com/v1/api/img/ocr/general";//URL地址 string payload =

"app_key=8102b22a5e81e840176d9f381ec6f837&img=https%3A%2F%2Fai.xueersi.com%2FtextRecognition%2Fimages%2F22.jpg&img_type=URL&time_stamp=1551174536&nonce_str=W8FI8oCp&sign=7d15e530e58fcf3a020ec69b48d951010fa49322";

CookieContainer cookieContainer = new CookieContainer();

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

webRequest.ContentLength = Encoding.UTF8.GetByteCount(payload);

webRequest.ContentType = "application/x-www-form-urlencoded";//Content-Type

webRequest.CookieContainer = cookieContainer; webRequest.Method =

"post";

Stream request = webRequest.GetRequestStream(); StreamWriter

streamWriter = new StreamWriter(request, Encoding.GetEncoding("gb2312"));

streamWriter.Write(payload);

streamWriter.Close(); HttpWebResponse response =

(HttpWebResponse)webRequest.GetResponse(); response.Cookies =

cookieContainer.GetCookies(response.ResponseUri); Stream returnStream =

response.GetResponseStream(); StreamReader streamReader = new

StreamReader(returnStream, Encoding.GetEncoding("utf-8")); string endResult =

streamReader.ReadToEnd();//返回结果

streamReader.Close();

returnStream.Close();

return endResult;

}

}

}

Page 17: OCR文字识别 - docai.xueersi.com

iOS 代码示例:

wx.request({

url: 'http://openapiai.xueersi.com/v1/api/img/ocr/general',

method: "post",

data:

{

app_key: "8102b22a5e81e840176d9f381ec6f837", img:

"https://ai.xueersi.com/textRecognition/images/22.jpg",

img_type: "URL",

time_stamp: "1551174536",

nonce_str: "W8FI8oCp", sign:

"c08d8f9900479a3b2a348c1d7dc7e918e71be66a"

},

header: {

"content-type": "application/x-www-form-urlencoded",

},

success(res) {

console.log(res.data)

}

})

iOS DEMO下载

NSURLSession *session = [NSURLSession sharedSession];NSString *urlStr =

@"http://openapiai.xueersi.com/v1/api/img/ocr/general";NSURL *url = [NSURL

URLWithString:urlStr];NSMutableURLRequest *request = [NSMutableURLRequest

requestWithURL:url];

request.HTTPMethod = @"POST";NSString *app_key = @"app_key=8102b22a5e81e840176d9f381ec6f837";

NSString *img = @"img=https://ai.xueersi.com/textRecognition/images/22.jpg";NSString

*img_type = @"img_type=URL";

NSString *time_stamp = @"time_stamp=1551174536";NSString *nonce_str = @"nonce_str=W8FI8oCp";

NSString *sign = @"sign=c08d8f9900479a3b2a348c1d7dc7e918e71be66a";NSString *paramsStr =

[NSString stringWithFormat:@"%@&%@&%@&%@&%@&%@", app_key, img, img_type, time_stamp,

Page 18: OCR文字识别 - docai.xueersi.com

参数名 类型 赋值说明 样例 备注code string 返回码 0  

msg string 返回码解释 "请求成功"  

data object 识别数据结构 数据结构  

content array 识别文本数组 ["学而思网校"] 数组中每一个元素代表一行识别文本

loc array 图像中的图形位置 [[123,76,202,157]] 左上角点坐标,右下角点坐标 ,图像中无图形时为空

recognition object 详细识别信息结构 数据结构 包含图表信息,文本单字信息,英文单词信息,支持拼音识别

ocrId string 唯一的id"03-20-17-57-27-040-32c6e327d0573a9aac8480dc63f8908f"

用于定位问题

ocrLinesList array 识别对象数组   识别对象可为图表、一行文本

type string 对象类型   包含"word"、"table"、"p"三种类型,分别表示文字,图表,行/段落

alp object 拼音对象   当图像中文字包含拼音时,返回结果中文字包含拼音对象

row int 行合并数 1 表格单元包含的行数

col int 列合并数 1 表格单元包含的列数

lineNum int 表格单元所在行数 2 表格单元的起始行数

响应Body:

nonce_str, sign];request.HTTPBody = [paramsStr dataUsingEncoding:NSUTF8StringEncoding];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request

completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError *

_Nullable error) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data

options:kNilOptions error:nil];

NSLog(@"result=%@",dict);

}];

[dataTask resume];

返回响应返回格式JSON格式

响应参数说明

响应代码示例{

Page 19: OCR文字识别 - docai.xueersi.com

"code": 0,

"msg": "请求成功",

"data": {

"recognition": { "ocrId": "03-20-17-57-27-

040_32c6e327d0573a9aac8480dc63f8908f",

"ocrLinesList": [

{

"data": [

{

"alp": null, "height":

29,

"type": "word", "value":

"形",

"width": 27, "x":

82,

"y": 56

},

{ "type":

"word",

"x": 96, "y":

56,

"width": 27, "height":

29,

"value": "成", "alp":

{

"value": "ch&eacute;ng", "x":

90,

"y": 30, "width":

35,

"height": 18

}

}

],

"type": "p"

},

{

Page 20: OCR文字识别 - docai.xueersi.com

"type": "table",

"size": {

"width": "80px", "height":

"50px"

},

"linePos": [

{

"row": 1, "col":

1,

"lineNum": 2, "data":

[

{ "type":

"p",

"data": [

{ "type":

"word", "x":

70, "y":

100, "width":

29, "height":

27, "value":

"他", "alp":

null

}

]

}

]

}

]

}

]

},

"content": [

"形成(ch&eacute;ng)",

"他"

],

"loc": [

Page 21: OCR文字识别 - docai.xueersi.com

常见错误返回码列表用户反馈

[

120,

70,

210,

150

]

]

}

}

常见问题及反馈Revision #117 Created Thu, Feb 21, 2019 12:02 PM by 王俊玺Updated Sun, Jan 19, 2020 10:11 AM by 杨挺