文档首页> 文字识别 OCR> API参考> API> 网络图片识别
更新时间:2023-11-10 GMT+08:00

网络图片识别

功能介绍

识别网络图片中的文字内容,并以JSON格式返回识别的结构化结果。

该接口的使用限制请参见约束与限制,详细使用指导请参见OCR服务使用简介章节。

约束与限制

  • 支持中英文及部分中文繁体字。
  • 只支持识别JPG、JPEG、PNG、BMP、TIFF、TGA、WEBP、ICO、PCX、GIF格式图片。
  • 支持常见网络图片:手机截图、电脑截图、电商产品图及广告设计图等互联网图片。
  • 图像各边的像素大小在15px到8192px之间。
  • 图像中有效文字图片占比超过60%,避免有效文字图片占比过小。
  • 支持图像中有效文字图片的任意角度的水平旋转(需开启方向检测)。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

前提条件

在使用之前,需要您完成服务申请和认证鉴权,具体操作流程请参见开通服务认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。

URI

POST /v2/{project_id}/ocr/web-image

表1 路径参数

参数

是否必选

说明

endpoint

终端节点,即调用API的请求地址。

不同服务不同区域的endpoint不同,您可以从终端节点中获取。

project_id

项目ID,您可以从获取项目ID中获取。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。

Content-Type

String

发送的实体的MIME类型,参数值为“application/json”。

表3 请求Body参数

参数

是否必选

参数类型

说明

image

String

该参数与url二选一。

图片的Base64编码,要求Base64编码后大小不超过10MB。

图片最短边不小于15px,最长边不超过8192px,支持JPG、JPEG、PNG、BMP、TIFF、TGA、WEBP、ICO、PCX、GIF格式。

图片Base64编码示例如/9j/4AAQSkZJRgABAg...,带有多余前缀会产生The image format is not supported报错。

url

String

该参数与image二选一。图片的url路径,目前支持:

  • 公网http/https url
  • OBS提供的url,使用OBS数据需要进行授权。包括对服务授权、临时授权、匿名公开授权,详情参见配置OBS访问权限
说明:
  • 接口响应时间依赖于图片的下载时间,如果图片下载时间过长,会返回接口调用失败。
  • 请保证被检测图片所在的存储服务稳定可靠,推荐使用OBS服务存储图片数据。
  • url中不能存在中文字符,若存在,中文需要进行utf8编码。

detect_direction

Boolean

是否校正图片的倾斜角度,可选值如下。

  • true:校正图片的倾斜角度
  • false:不校正图片的倾斜角度

支持任意角度的校正,未传入该参数时默认为“false”

待识别图片如果存在倾斜,建议将此参数设置为“true”。

extract_type

Array of strings

结构化数据提取参数列表,目前只支持图像宽高,其入参值为“image_size”

若不填写该参数或删除该参数,默认不提取该参数值。

detect_font

Boolean

为Boolean类型,若不传该字段,默认不检测切片字体,为True时,将检测切片的字体类型,并返回最相似的5种字体名称。

detect_text_direction

Boolean

为Boolean类型,若不传该字段,默认为True,即检测每个字段的文字方向。为False时,则不检测文字方向。若图片中所有文字方向均是水平朝上时,建议将该值设为False,即不检测文字方向。

响应参数

根据识别的结果,可能有不同的HTTP响应状态码(status code)。例如,200表示API调用成功,400表示调用失败,详细的状态码和响应参数说明如下。

状态码: 200

表4 响应Body参数

参数

参数类型

描述

result

WebImageResult object

调用成功时表示调用结果。

调用失败时无此字段。

表5 WebImageResult

参数

参数类型

描述

words_block_count

Integer

代表检测识别出来的文字块数目。

words_block_list

Array of WebImageWordsBlockList objects

识别文字块列表,输出顺序从左到右,从上到下。

extracted_data

WebImageExtractedData object

提取出的结构化JSON结果,该字典内的key值与入参列表extract_type的值一致,目前仅支持联系人、图像高宽信息提取,亦即key值为"contact_info"的字段、"image_size"字段。

若入参extract_type为空列表或该字段缺失时,不进行提取,此字段为空。

表6 WebImageWordsBlockList

参数

参数类型

描述

words

String

文字块识别结果。

confidence

Float

相关字段的置信度信息,置信度越大,表示本次识别的对应字段的可靠性越高,在统计意义上,置信度越大,准确率越高。 置信度由算法给出,不直接等价于对应字段的准确率。

location

Array<Array<Integer>>

文字块的区域位置信息,列表形式,包含文字区域四个顶点的二维坐标(x,y);坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向。

font_list

Array of strings

文字块所属字体类型,列表形式,表示与文字块的文字最接近的字体类型。

font_scores

Array of numbers

文字块所属字体类型的概率,列表形式,与font_list一一对应,表示文字块的文字属于某种字体类型的概率。

表7 WebImageExtractedData

参数

参数类型

描述

contact_info

WebImageContactInfo object

该字段表示提取的联系人信息,包括:姓名、联系电话、省市区以及详细地址。 若入参extract_type列表中无该字段,则此字段不存在。

image_size

WebImageImageSize object

该字段表示返回图片宽高信息。 如入参extract_type列表中无该字段,则此字段不存在。

表8 WebImageContactInfo

参数

参数类型

描述

name

String

传入contact_info时的返回,为姓名。

phone

String

传入contact_info时的返回,联系电话。

province

String

传入contact_info时的返回,省。

city

String

传入contact_info时的返回,市。

district

String

传入contact_info时的返回,县区。

detail_address

String

传入contact_info时的返回,详细地址(不含省市区)。

表9 WebImageImageSize

参数

参数类型

描述

height

Integer

传入image_size时的返回,为图像高度。

width

Integer

传入image_size时的返回,为图像宽度。

状态码: 400

表10 响应Body参数

参数

参数类型

描述

error_code

String

调用失败时的错误码,具体请参见错误码

当出现错误码“ModelArts.4204”时,请参考为什么调用API时提示“ModelArts.4204”?章节。

调用成功时不返回此字段。

error_msg

String

调用失败时的错误信息。 调用成功时无此字段。

请求示例

  • “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点

    例如,网络图片识别服务部署在“亚太-曼谷”区域的“endpoint”“ocr.ap-southeast-2.myhuaweicloud.com”“ocr.ap-southeast-2.myhuaweicloud.cn”,请求URL为“https://ocr.ap-southeast-2.myhuaweicloud.com/v2/{project_id}/ocr/web-image”“project_id”为项目ID,获取方法请参见获取项目ID

  • 如何获取Token请参见认证鉴权
  • 传入网络图片的base64编码进行文字识别
    POST https://{endpoint}/v2/{project_id}/ocr/web-image
    Request Header:
    Content-Type: application/json
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...
    
    Request Body:  
    {  
        "image":"/9j/4AAQSkZJRgABAgEASABIAAD/..."
    }
  • 传入网络图片的url进行文字识别
    POST https://{endpoint}/v2/{project_id}/ocr/web-image
    Request Header:   
    Content-Type: application/json   
    X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG...       
    Request Body:
    {
         "url":"https://BucketName.obs.xxxx.com/ObjectName"
    }
  • 使用Python3语言读取本地网络图片,并进行文字识别
    # encoding:utf-8
    
    import requests
    import base64
    
    url = "https://{endpoint}/v2/{project_id}/ocr/web-image"
    token = "用户获取得到的实际token值"
    headers = {'Content-Type': 'application/json', 'X-Auth-Token': token}
    
    imagepath = r'./data/web-image-demo.png' # 读取本地图片
    with open(imagepath, "rb") as bin_data:
        image_data = bin_data.read()
    image_base64 = base64.b64encode(image_data).decode("utf-8")  # 使用图片的Base64编码
    payload = {"image": image_base64}
    response = requests.post(url, headers=headers, json=payload)
    print(response.text)

响应示例

状态码:200

成功响应示例

{ 
  "result": { 
      "words_block_count": 2, 
      "words_block_list": [ 
          { 
              "words": "文字块1", 
              "confidence": 0.9950,
              "location": [ 
                  [13, 476], 
                  [91, 332], 
                  [125, 351], 
                  [48, 494] 
              ] 
          }, 
          { 
              "words": "文字块2", 
              "confidence": 0.9910,
              "location": [ 
                  [13, 476], 
                  [91, 332], 
              "location": [ 
                  [13, 476], 
                  [91, 332], 
                  [125, 351], 
                  [48, 494] 
              ] 
          }, 
          { 
              "words": "文字块2", 
              "confidence": 0.9910,
              "location": [ 
                  [13, 476], 
                  [91, 332], 
                  [125, 351], 
                  [48, 494] 
              ] 
          } 
      ],
      "extracted_data": {}
  } 
}

状态码:400

失败响应示例

{
    "error_code": "AIS.0103", 
    "error_msg": "The image size does not meet the requirements." 
}

状态码

状态码

描述

200

成功响应样例

400

失败响应样例

状态码请参见状态码

错误码

错误码请参见错误码