财务报表识别
功能介绍
识别用户上传的表格图片中的文字内容,并将识别的结果返回给用户。
约束与限制
- 只支持识别PNG、JPG、JPEG、BMP、TIFF格式的图片。
- 图像各边的像素大小在15px到8192px之间。
- 图像中识别区域有效占比超过80%,保证整张表格及其边缘包含在图像内。
- 支持图像任意角度的水平旋转。
- 目前不支持复杂背景(如户外自然场景、防伪水印等)和表格线扭曲图像的文字识别。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
前提条件
在使用财务报表识别之前,需要您完成服务申请和认证鉴权,具体操作流程请参见开通服务和认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。
URI
POST https://{endpoint}/v2/{project_id}/ocr/financial-statement
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 用于获取操作API的权限。获取Token接口响应消息头中X-Subject-Token的值即为Token。 |
Content-Type |
是 |
String |
发送的实体的MIME类型,参数值为“application/json”。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
image |
否 |
String |
与url二选一。 图片的Base64编码,要求Base64编码后大小不超过10MB。 图片最短边不小于15px,最长边不超过8192px,支持JPEG、JPG、PNG、BMP、TIFF格式。 图片Base64编码示例如/9j/4AAQSkZJRgABAg...,带有多余前缀会产生The image format is not supported报错。 |
url |
否 |
String |
与image二选一。 图片的URL路径,目前支持:
说明:
|
return_text_location |
否 |
Boolean |
返回文本块坐标及单元格坐标信息,可选值包括:
未传入该参数时默认为false,即不返回。 |
return_confidence |
否 |
Boolean |
返回字段识别置信度,小数点后四位。可选值包括:
未传入该参数时默认为false,即不返回字段置信度。 |
return_excel |
否 |
Boolean |
是否返回表格转换Microsoft Excel的Base64编码字段。可选值包括:
对返回的Excel编码,可用Python函数 base64.b64decode解码后保存为xlsx文件。 |
return_table_location |
否 |
Boolean |
返回表格坐标,可选值包括:
未传入该参数时默认为false,即不返回。 |
return_image_size |
否 |
Boolean |
返回矫正后的图像大小,可选值包括:
未传入该参数时默认为false,即不返回。 |
return_rectification_matrix |
否 |
Boolean |
透视变换矩阵,可选值包括:
说明:
说明:未传入该参数时默认为false,即不返回透视变换矩阵。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
result |
FinancialStatementResult object |
识别结果。 调用失败时不返回此字段。 |
参数 |
参数类型 |
描述 |
---|---|---|
words_region_count |
Integer |
识别出来的表格、文本区域个数。 |
words_region_list |
Array of FinancialStatementWordsRegionList objects |
返回的表格、文本区域列表。输出顺序从左到右,从上到下。 |
excel |
String |
表格图像转换为excel的Base64编码,图像中的文字和表格按位置写入excel,可编辑。对返回的excel编码,可用base64.b64decode解码并保存为xlsx文件。 |
image_size |
image_size object |
矫正后图像的高宽信息。 |
rectification_matrix |
Array<Array<Number>> |
返回透视变换矩阵。 |
参数 |
参数类型 |
描述 |
---|---|---|
type |
String |
区域属性:文本或表格。 |
words_block_count |
Float |
检测到的文字块数目。对文本区,文字块以文本字段为单位;对表格区,文字块以单元格内所有字段为单位。 |
table_location |
Array<Array<Integer>> |
表格位置信息,列表形式,分别表示表格4个顶点的x, y坐标;坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向。 |
words_block_list |
Array of FinancialStatementWordsBlockList objects |
区域内文字块列表,输出顺序从左到右,从上到下。 |
参数 |
参数类型 |
描述 |
---|---|---|
words |
String |
文字块内容。当入参"return_text_location"为false时,每个单元格返回一个文本值,不同行文本由换行符 "\n" 拼接。 |
location |
Array<Array<Integer>> |
文字块位置信息,列表形式,分别表示文字块4个顶点的x, y坐标;坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向。 |
confidence |
Float |
文字块识别结果置信度信息,置信度越大,表示本次识别的对应字段的可靠性越大,在统计意义上,置信度越大正确率越高。注:置信度由算法给出,其不直接等价于对应字段的精度。 |
rows |
Array of integers |
单元格行信息,列表形式。多个连续值表示单元格垮多行。 |
columns |
Array of integers |
单元格列信息,列表形式。多个连续值表示单元格垮多列。 |
cell_location |
Array<Array<Integer>> |
单元格位置信息,列表形式,分别表示单元格4个顶点的x, y坐标;坐标原点为图片左上角,x轴沿水平方向,y轴沿竖直方向。 |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
调用失败时的错误码,具体请参见错误码。 调用成功时不返回此字段。 |
error_msg |
String |
调用失败时返回的错误信息。 调用成功时不返回此字段。 |
请求示例

- 请求样例(方式一:使用图片的Base64编码)
POST https://{endpoint}/v2/{project_id}/ocr/financial-statement Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "image" : "/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAA..." }
- 请求样例(方式二:使用图片URL)
POST https://{endpoint}/v2/{project_id}/ocr/financial-statement Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "url" : "/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAA..." }
- Python3语言请求代码示例(其他语言参照下列示例编写或使用OCR SDK)
# encoding:utf-8 import requests import base64 url = "https://{endpoint}/v2/{project_id}/ocr/financial-statement" token = "用户获取得到的实际token值" headers = {'Content-Type': 'application/json', 'X-Auth-Token': token} imagepath = r'./data/financial-statement-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_region_count" : 2, "words_region_list" : [ { "type" : "text", "words_block_count" : 1, "words_block_list" : [ { "words" : "文字区域识别文字块1", "confidence" : 0.999 } ] }, { "type" : "table", "table_location" : [ [ 120, 106 ], [ 200, 106 ], [ 200, 351 ], [ 120, 351 ] ], "words_block_count" : 2, "words_block_list" : [ { "words" : "负债和所有者权益(或股东权益)", "confidence" : 0.9963, "rows" : [ 0 ], "columns" : [ 0 ] }, { "words" : "行次", "confidence" : 0.9999, "rows" : [ 0 ], "columns" : [ 1 ] } ] } ], "excel" : "AQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKg…", "image_size" : { "height" : 2501, "width" : 1701 } } }
状态码: 400
失败响应样例
{ "error_code" : "AIS.0103", "error_msg" : "The image size does not meet the requirements." }
错误码
错误码请参见错误码。