本文介紹了調用圖片同步檢測接口識別通用圖文OCR的方法。通用圖文OCR能夠識別并返回圖片中的文字內容。
通用圖文OCR識別分為普通版本和高精度版本。
普通版本適用于識別影視畫面、互聯網圖片等文字較少的場景。
高精度版本適用于復雜的文檔圖片識別以及圖片中有高密度文字的場景,能夠返回單字信息。
通用圖文OCR默認識別語種為中英文,如需識別其他語種(多民族語言:蒙古語、維語、藏語;多國語言:阿拉伯語、俄語、法語、西語、葡語,日語,韓語,泰語,越南語,波斯語,孟加拉語,德語,荷蘭語,馬來語,意大利語,印地語,印尼語等)內容,請聯系商務經理。
使用說明
業務接口:/green/image/scan,表示圖片同步檢測。
您可以調用該接口創建圖片同步檢測任務。關于如何構造HTTP請求,請參見請求結構;您也可以直接選用已構造好的HTTP請求,更多信息,請參見SDK概覽。
計費信息:
該接口為收費接口。關于計費方式,請參見內容安全產品定價。
檢測超時:
同步檢測允許的最長檢測時間是6秒,如果檢測在該時間限制內沒有完成,系統會強制返回超時錯誤碼。如果您對實時性要求不高,可以選擇異步檢測,其他情況下請選擇同步檢測,同步檢測接口的調用相對簡單些。對于同步檢測接口的調用,建議您將超時時間設置為6秒。
返回結果:
同步檢測請求一般會在一秒內返回結果,但在一些特殊場景(例如系統繁忙導致堆積嚴重、圖片較大、含有OCR內容較多等),耗時可能會增加。OCR的處理速度依賴圖片中文字的字數,字數越多處理時間越長。如果您檢測的場景中文字較多,推薦您使用圖片異步檢測接口。
圖片要求:
圖片鏈接支持以下協議:HTTP和HTTPS。
圖片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
圖片大小限制為20 MB以內(適用于同步和異步調用),高度或者寬度不能超過30,000像素(px),且圖像總像素不超過2.5億(px)。
說明其中,GIF格式的圖片,圖像總像素不超過4,194,304(px),高度或者寬度不能超過30,000像素(px)。
圖片下載時間限制為3秒內,如果下載時間超過3秒,返回下載超時。
圖片像素建議不低于256*256(px),像素過低可能會影響識別效果。
圖片檢測接口的響應時間依賴圖片的下載時間。請保證被檢測圖片所在的存儲服務穩定可靠,建議您使用阿里云OSS存儲或者CDN緩存等。
QPS限制
本接口的單用戶QPS限制為10次/秒。超過限制,API調用會被限流,這可能會影響您的業務,請合理調用。
請求參數
名稱 | 類型 | 是否必須 | 示例值 | 描述 |
bizType | String | 否 | default | |
scenes | StringArray | 是 | ["ocr"] | 指定檢測場景,取值:ocr。 |
tasks | JSONArray | 是 | 指定檢測對象,JSON數組中的每個元素是一個檢測任務結構體。最多支持100個元素,即每次提交100條內容進行檢測,支持100個元素的前提是需要將并發任務調整到100個以上。關于每個元素的具體結構描述,請參見task。 | |
extras | JSONObject | 否 | {"type":"advanced"} | 不傳入extras參數表示使用普通版本OCR識別。 如果使用高精度OCR識別,需要傳入該參數,格式為 |
名稱 | 類型 | 是否必須 | 示例值 | 描述 |
dataId | String | 否 | test_data_xxxx | 數據ID。需要保證在一次請求中所有的ID不重復。 |
url | String | 是 | https://aliyundoc.com/test_image_xxxx.png | 檢測對象的URL。
|
interval | Integer | 否 | 2 | 截幀頻率,GIF圖、長圖檢測專用。
默認只會檢測GIF圖、長圖的第一幀,interval參數用于指示后臺在檢測時可按照該間隔跳著檢測,以節省檢測成本。 說明 interval需要與maxFrames參數組合使用。例如,設置interval為2,maxFrames為100,在檢測GIF圖、長圖時,將每間隔1幀檢測一次,最多檢測100幀,計費則按照實際檢測的數量計算。 |
maxFrames | Integer | 否 | 100 | 最大截幀數量,GIF圖、長圖檢測專用,默認值為1。 當 |
返回數據
名稱 | 類型 | 示例值 | 描述 |
code | Integer | 200 | 錯誤碼,和HTTP的status code一致。 |
msg | String | OK | 請求信息的響應消息。 |
dataId | String | test_data_xxxx | 檢測對象對應的數據ID。 說明 如果在檢測請求參數中傳入了dataId,則此處返回對應的dataId。 |
taskId | String | img5A@k7a@B4q@6K@d9nfKgOs-1s**** | 檢測任務的ID。 |
url | String | https://aliyundoc.com/test_image_xxxx.png | 檢測對象的URL。
|
extras | JSONObject | {"type":"advanced"} | 額外調用參數,對應檢測請求參數中的extras。 說明 該參數可能會被調整,目前請勿依賴該參數的返回值。 |
results | Array | 返回結果。調用成功時(code=200),返回結果中包含一個或多個元素。每個元素是個結構體,具體結構描述請參見result。 |
名稱 | 類型 | 示例值 | 描述 |
scene | String | ocr | 檢測場景,取值:ocr。 |
label | String | ocr | 檢測結果的分類。取值:
|
suggestion | String | review | 建議用戶執行的操作,取值:
|
rate | Float | 99.91 | 在OCR圖文識別場景中,可以不用關注該返回值。 |
ocrLocations | Array | 靜態圖(非GIF圖片)有文字時,返回識別出來的單條文字信息。具體結構描述請參見ocrLocation。 說明 如果未識別到文字,則不返回該結果。 | |
ocrData | Array | ["hello, this is a test text."] | 靜態圖(非GIF圖片)有文字時,返回識別出來的所有文字信息組合。通常文本組合信息存儲于數組第一個元素上。 說明 如果未識別到文字,則不返回該結果。 |
frames | Array | xxx | 動態圖(GIF圖片)有文字時,返回識別出來的每一幀及對應的文字。 說明 如果未截取多幀,則不返回該結果。 |
ocrDetailInfo | Object | 高精度全文識別結果的詳細文字信息,具體結構描述請參見ocrDetailInfo。 說明 只有在請求參數extras中傳入了 |
名稱 | 類型 | 示例值 | 描述 |
text | String | hello | 識別出來的單條文本信息。 |
x | Float | 41 | 以圖片左上角為坐標原點,文字區域左上角到y軸的距離,單位:像素。 |
y | Float | 84 | 以圖片左上角為坐標原點,文字區域左上角到x軸的距離,單位:像素。 |
w | Float | 83 | 文字區域的寬度,單位:像素。 |
h | Float | 26 | 文字區域的高度,單位:像素。 |
名稱 | 類型 | 示例值 | 描述 |
wordNum | Integer | 2 | 字塊數量。 |
wordsInfo | Object | 字塊信息。具體結構描述請參見wordsInfo。 |
名稱 | 類型 | 示例值 | 描述 |
charInfo | Array | 單字信息。具體結構描述請參見charInfo。 | |
direction | Integer | 0 | 文字方向。取值:
|
pos | Array | 坐標信息。具體結構描述請參見pos。 | |
prob | Integer | 99 | 置信度。 |
word | String | 林下漏光 | 字塊包含的文字內容。 |
名稱 | 類型 | 示例值 | 描述 |
h | Integer | 20 | 文字高度,單位:像素。 |
prob | Integer | 99 | 置信度。 |
w | Integer | 20 | 文字寬度,單位:像素。 |
word | String | 林 | 單字內容。 |
x | Integer | 39 | 單字在x軸上的坐標,單位:像素。 |
y | Integer | 86 | 單字在y軸上的坐標,單位:像素。 |
名稱 | 類型 | 示例值 | 描述 |
x | Integer | 73 | 當前字塊在x軸上的坐標,單位:像素。 |
y | Integer | 113 | 當前字塊在y軸上的坐標,單位:像素。 |
示例
普通圖文OCR
請求示例
http(s)://[Endpoint]/green/image/scan &<公共請求參數> { "scenes": [ "ocr" ], "tasks": [ { "dataId": "test_data_xxxx", "url": "https://aliyundoc.com/test_image_xxxx.png" } ] }
正常返回示例
{ "code": 200, "data": [ { "code": 200, "dataId": "test_data_xxxx", "extras": { }, "msg": "OK", "results": [ { "label": "ocr", "ocrData": [ "hello, this is a test text." ], "ocrLocations": [ { "h": 26, "text": "hello", "w": 83, "x": 41, "y": 84 }, { "h": 25, "text": " this is a test text.", "w": 95, "x": 78, "y": 114 } ], "rate": 99.91, "scene": "ocr", "suggestion": "review" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://aliyundoc.com/test_image_xxxx.png" } ], "msg": "OK", "requestId": "C4AB08A9-AD75-4410-859B-0B9EF6DFC3C4" }
高精度圖文OCR
請求示例
http(s)://[Endpoint]/green/image/scan &<公共請求參數> { "scenes": [ "ocr" ], "extras": { "type": "advanced" }, "tasks": [ { "dataId": "test_data_xxxx", "url": "https://aliyundoc.com/test_image_xxxx.png" } ] }
正常返回示例
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { }, "results": [ { "ocrData": [ "林下漏光,疏疏如殘雪 " ], "ocrDetailInfo": { "wordsInfo": [ { "prob": 99, "pos": [ { "x": 37, "y": 86 }, { "x": 123, "y": 86 }, { "x": 123, "y": 109 }, { "x": 37, "y": 109 } ], "word": "林下漏光", "charInfo": [ { "prob": 99, "w": 20, "h": 20, "x": 39, "y": 86, "word": "林" }, { "prob": 99, "w": 5, "h": 20, "x": 63, "y": 86, "word": "下" }, { "prob": 99, "w": 17, "h": 20, "x": 72, "y": 86, "word": "漏" }, { "prob": 99, "w": 17, "h": 20, "x": 103, "y": 86, "word": "光" } ], "direction": 0 }, { "prob": 99, "pos": [ { "x": 73, "y": 113 }, { "x": 174, "y": 113 }, { "x": 174, "y": 136 }, { "x": 73, "y": 136 } ], "word": "疏疏如殘雪", "charInfo": [ { "prob": 99, "w": 19, "h": 20, "x": 74, "y": 113, "word": "疏" }, { "prob": 99, "w": 16, "h": 20, "x": 97, "y": 113, "word": "疏" }, { "prob": 99, "w": 13, "h": 20, "x": 117, "y": 113, "word": "如" }, { "prob": 99, "w": 16, "h": 20, "x": 134, "y": 113, "word": "殘" }, { "prob": 99, "w": 16, "h": 20, "x": 154, "y": 113, "word": "雪" } ], "direction": 0 } ], "wordNum": 2 }, "scene": "ocr", "label": "ocr", "suggestion": "review", } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://aliyundoc.com/test_image_xxxx.png" } ], "requestId": "03E6B458-8DDD-4D44-8856-3216E660201E" }