实战腾讯云ORC文字识别
之前弄服務器的時候無意間看到騰訊云有文字識別類的產品,在好奇的驅動下我點了進去,讓就一發不可收拾。。。。。。。
廢話不多說,直接開整
首先打開騰訊云的官網:https://cloud.tencent.com/
在云產品里找到文字識別
開通業務后,可以在右上角找到武林秘籍(開發文檔)
大致內容就是以下幾部分,其實大致看看就好了,不想看的也可以直接掠過(重點)。
通用印刷體識別(精簡版)(免費公測版)
在這篇文章中:
- 1. 接口描述
- 2. 輸入參數
- 3. 輸出參數
- 4. 示例
- 示例1 通用印刷體識別(精簡版)示例代碼
- 5. 開發者資源
- API Explorer
- SDK
- 命令行工具
- 6. 錯誤碼
1. 接口描述
接口請求域名: ocr.tencentcloudapi.com 。
本接口支持多場景、任意版面下整圖文字的識別。相較于“通用印刷體識別”接口,精簡版接口在準召率有一定損失的情況下,耗時更短。適用于對接口耗時較為敏感的客戶。
默認接口請求頻率限制:10次/秒。
2. 輸入參數
以下請求參數列表僅列出了接口請求參數和部分公共參數,完整公共參數列表見?公共請求參數。
[td]
參數名稱
必選
類型
描述
Action
是
String
公共參數,本接口取值:GeneralEfficientOCR
Version
是
String
公共參數,本接口取值:2018-11-19
Region
是
String
公共參數,詳見產品支持的?地域列表,本接口僅支持其中的: ap-beijing, ap-guangzhou, ap-hongkong, ap-shanghai, na-toronto
ImageBase64
否
String
圖片的 Base64 值。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經Base64編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片的 ImageUrl、ImageBase64 必須提供一個,如果都提供,只使用 ImageUrl。
ImageUrl
否
String
圖片的 Url 地址。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經 Base64 編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片存儲于騰訊云的 Url 可保障更高的下載速度和穩定性,建議圖片存儲于騰訊云。
非騰訊云存儲的 Url 速度和穩定性可能受一定影響。
3. 輸出參數[td]
參數名稱
類型
描述
TextDetections
Array of?TextDetection
檢測到的文本信息,具體內容請點擊左側鏈接。
RequestId
String
唯一請求 ID,每次請求都會返回。定位問題時需要提供該次請求的 RequestId。
文檔中心??文字識別??API 文檔??通用文字識別相關接口??通用印刷體識別(精簡版)(免費公測版)
通用印刷體識別(精簡版)(免費公測版)
在這篇文章中:
- 1. 接口描述
- 2. 輸入參數
- 3. 輸出參數
- 4. 示例
- 示例1 通用印刷體識別(精簡版)示例代碼
- 5. 開發者資源
- API Explorer
- SDK
- 命令行工具
- 6. 錯誤碼
1. 接口描述
接口請求域名: ocr.tencentcloudapi.com 。
本接口支持多場景、任意版面下整圖文字的識別。相較于“通用印刷體識別”接口,精簡版接口在準召率有一定損失的情況下,耗時更短。適用于對接口耗時較為敏感的客戶。
默認接口請求頻率限制:10次/秒。
2. 輸入參數
以下請求參數列表僅列出了接口請求參數和部分公共參數,完整公共參數列表見?公共請求參數。
[td]
參數名稱
必選
類型
描述
Action
是
String
公共參數,本接口取值:GeneralEfficientOCR
Version
是
String
公共參數,本接口取值:2018-11-19
Region
是
String
公共參數,詳見產品支持的?地域列表,本接口僅支持其中的: ap-beijing, ap-guangzhou, ap-hongkong, ap-shanghai, na-toronto
ImageBase64
否
String
圖片的 Base64 值。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經Base64編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片的 ImageUrl、ImageBase64 必須提供一個,如果都提供,只使用 ImageUrl。
ImageUrl
否
String
圖片的 Url 地址。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經 Base64 編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片存儲于騰訊云的 Url 可保障更高的下載速度和穩定性,建議圖片存儲于騰訊云。
非騰訊云存儲的 Url 速度和穩定性可能受一定影響。
3. 輸出參數[td]
參數名稱
類型
描述
TextDetections
Array of?TextDetection
檢測到的文本信息,具體內容請點擊左側鏈接。
RequestId
String
唯一請求 ID,每次請求都會返回。定位問題時需要提供該次請求的 RequestId。
4. 示例示例1 通用印刷體識別(精簡版)示例代碼輸入示例
https://ocr.tencentcloudapi.com/?Action=GeneralEfficientOCR&ImageUrl=https://xx/a.jpg&<公共請求參數>
輸出示例
{??"Response": {? ? "TextDetections": [? ?? ?{? ?? ???"DetectedText": "夏天的飛鳥,” 飛到我窗前唱歌,又飛去了。",? ?? ???"Confidence": 93,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 30,? ?? ?? ?? ?"Y": 147? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 30,? ?? ?? ?? ?"Y": 126? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 384,? ?? ?? ?? ?"Y": 133? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 384,? ?? ?? ?? ?"Y": 155? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":1}}"? ?? ?},? ?? ?{? ?? ???"DetectedText": "秋天的黃葉,它們沒有什么可唱,只嘆息聲,飛落在那里。",? ?? ???"Confidence": 99,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 27,? ?? ?? ?? ?"Y": 200? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 27,? ?? ?? ?? ?"Y": 179? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 532,? ?? ?? ?? ?"Y": 185? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 532,? ?? ?? ?? ?"Y": 206? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":2}}"? ?? ?},? ?? ?{? ?? ???"DetectedText": "Stray birds of summer come to my window to sing and fly away.",? ?? ???"Confidence": 79,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 25,? ?? ?? ?? ?"Y": 304? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 25,? ?? ?? ?? ?"Y": 285? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 606,? ?? ?? ?? ?"Y": 289? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 606,? ?? ?? ?? ?"Y": 308? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":3}}"? ?? ?},? ?? ?{? ?? ???"DetectedText": "And yellow leaves of autumn, which have no songs, flutter and fall there with a sign.",? ?? ???"Confidence": 81,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 24,? ?? ?? ?? ?"Y": 357? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 24,? ?? ?? ?? ?"Y": 339? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 782,? ?? ?? ?? ?"Y": 342? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 782,? ?? ?? ?? ?"Y": 360? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":4}}"? ?? ?},? ?? ?{? ?? ???"DetectedText": "飛鳥集",? ?? ???"Confidence": 99,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 844,? ?? ?? ?? ?"Y": 558? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 844,? ?? ?? ?? ?"Y": 524? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 969,? ?? ?? ?? ?"Y": 525? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 969,? ?? ?? ?? ?"Y": 560? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":5}}"? ?? ?},? ?? ?{? ?? ???"DetectedText": "STRAYBIRDS",? ?? ???"Confidence": 99,? ?? ???"Polygon": [? ?? ?? ? {? ?? ?? ?? ?"X": 739,? ?? ?? ?? ?"Y": 576? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 739,? ?? ?? ?? ?"Y": 594? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 973,? ?? ?? ?? ?"Y": 592? ?? ?? ? },? ?? ?? ? {? ?? ?? ?? ?"X": 973,? ?? ?? ?? ?"Y": 574? ?? ?? ? }? ?? ???],? ?? ???"AdvancedInfo": "{\"Parag\":{\"ParagNo\":6}}"? ?? ?}? ? ],? ? "RequestId": "8dd99adb-5144-43ca-8213-f6a929ce5075"??}}
5. 開發者資源API Explorer
該工具提供了在線調用、簽名驗證、SDK 代碼生成和快速檢索接口等能力,能顯著降低使用云 API 的難度,推薦使用。
- API 3.0 Explorer
SDK
云 API 3.0 提供了配套的開發工具集(SDK),支持多種編程語言,能更方便的調用 API。
- Tencent Cloud SDK 3.0 for Python
- Tencent Cloud SDK 3.0 for Java
- Tencent Cloud SDK 3.0 for PHP
- Tencent Cloud SDK 3.0 for Go
- Tencent Cloud SDK 3.0 for NodeJS
- Tencent Cloud SDK 3.0 for .NET
命令行工具
- Tencent Cloud CLI 3.0
6. 錯誤碼
以下僅列出了接口業務邏輯相關的錯誤碼,其他錯誤碼詳見?公共錯誤碼。
[td]
錯誤碼
描述
FailedOperation.DownLoadError
文件下載失敗。
FailedOperation.EmptyImageError
圖片內容為空。
FailedOperation.ImageDecodeFailed
圖片解碼失敗。
FailedOperation.ImageNoText
圖片中未檢測到文本。
FailedOperation.OcrFailed
Ocr識別失敗。
FailedOperation.UnKnowError
未知錯誤。
FailedOperation.UnOpenError
服務未開通。
InvalidParameterValue.InvalidParameterValueLimit
參數值錯誤。
LimitExceeded.TooLargeFileError
文件內容太大。
ResourcesSoldOut.ChargeStatusException
計費狀態異常。
=================================================================================================
略的同學看到這里!!!!
首先我們來看 ,【輸入參數】
紅色區域的參數基本上都是寫死的,直接復制后面描述里的內容就行了。
黃色區域的兩個參數二選一,如果你會將圖片編碼成Base64格式,推薦使用ImageBase64這個參數
當然不會的話,也可以使用ImageUrl這個參數,相比前者這個會慢一些。
很多同學會說說到這,我還是不會怎么用,沒關系,慢慢來,淡定!!!!
接下來我們看,【輸出參數】
很簡單,兩部分,TextDetections??和 RequestId,TextDetections??這個很重要,放到后面講
RequestId 主要就是當出現問題的時候用來定位問題需要的參數。至于TextDetections 看一下后面實例中的返回參數自然就懂了
我們可以看到返回的數據是一個json,可以看到就是TextDetections??和 RequestId兩部分,TextDetections里有五條數據,就是識別出來的五條數據。TextDetections里的參數代表的意義如下圖:
說了這么久代碼到底該怎么寫
我只能說的,重要的代碼幾乎不用你來寫,看過來!!!
看到開發文檔的第5點(那里有神器)
打開后看到如下界面,一步一步操作
1.選擇你的產品版本
2.選擇開發語言
3.查看自己的密鑰
4.填寫密鑰
5.選擇地區
6.添加圖片路徑
7.復制代碼
然后打開idea,創建maven項目,并利用插件轉換成web項目(也可以用骨架)
大致項目結構如下
?
有關spring的配置這里不做講解,跟平常一樣沒什么特別的。
看代碼:
package com.tencent.controller;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.GeneralEfficientOCRRequest;
import com.tencentcloudapi.ocr.v20181119.models.GeneralEfficientOCRResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ORCController { @RequestMapping(value = "scan",produces = "application/json;charset=UTF-8" ) @ResponseBody? ? //imageAddr為圖片的路徑,前端調用傳值。
? ??public String scan(String imageAddr){ try{
? ?? ?? ?? ?System.out.println(imageAddr);
? ?? ?? ?? ?Credential cred = new Credential("你的SecretId", "你的SecretKey");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
OcrClient client = new OcrClient(cred, "ap-guangzhou", clientProfile);
String params = "{\"ImageUrl\":\""+imageAddr+"\"}";
GeneralEfficientOCRRequest req =? ?? ?? ?? ?? ?? ?GeneralEfficientOCRRequest.fromJsonString(params, GeneralEfficientOCRRequest.class);
GeneralEfficientOCRResponse resp = client.GeneralEfficientOCR(req);
System.out.println(GeneralEfficientOCRRequest.toJsonString(resp));
? ?? ?? ?? ?return GeneralEfficientOCRRequest.toJsonString(resp);
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
? ?? ?? ?? ?return e.toString();
}
}
}
將之前在線調試時,代碼main函數中的內容和導包的代碼拷貝下來。注意導包的時候可能會包錯需要在pom.xml中添加騰訊云的依賴文件
<dependency> ??<groupId>com.tencentcloudapigroupId>
??<artifactId>tencentcloud-sdk-javaartifactId>
??<version>3.0.101version>
dependency> 看到前端請求,前端有個問題,因為上傳圖片的地址只能是url,所以對于沒有服務器沒有域名的我該怎么辦,于是我到網上找到了一個可以上傳的網絡相冊,大家可以自己到網上搜索,我使用的那個叫做帖圖庫,同樣有開發文檔和實例 然后就是編寫前端頁面啦,這里我使用的是bootstrap+jQuery來寫的jsp。這里就只放出識別請求和上傳圖片的js代碼,頁面大家可以按自己的需求編寫發送請求到后臺識別文字 <script> ? ??$(function () { ? ?? ???scan(); }); ? ??var url; ? ??function scan() { ? ?? ??$("#scanBtn").click(function () { ? ?? ?? ???$.ajax({ ? ?? ?? ?? ?? ?url:"/scan.do", ? ?? ?? ?? ?? ?data:{"imageAddr":url}, ? ?? ?? ?? ?? ?success:function (reasult) { ? ?? ?? ?? ?? ?? ??var str=""; ? ?? ?? ?? ?? ?? ??var datas = reasult.TextDetections; ? ?? ?? ?? ?? ?? ??for (item of datas){ ? ?? ?? ?? ?? ?? ?? ???str+=item.DetectedText+"
"; } ? ?? ?? ?? ?? ?? ??$("#getReasult").html(str); } }); }); } script>上傳圖片的請求<script> ? ??$(':button').click(function(){ ? ?? ???var formData = new FormData($('form')[0]); ? ?? ???$.ajax({ ? ?? ?? ?? ?url: 'http://up.imgapi.com/', ? ?? ?? ?? ?type: 'POST', ? ?? ?? ?? ?xhr: function() { ? ?? ?? ?? ?? ??myXhr = $.ajaxSettings.xhr(); ? ?? ?? ?? ?? ??if(myXhr.upload){ ? ?? ?? ?? ?? ?? ???myXhr.upload.addEventListener('progress',progressHandlingFunction, false); } ? ?? ?? ?? ?? ??return myXhr; }, ? ?? ?? ?? ?beforeSend: function(){ ? ?? ?? ?? ?? ??$('progress').show(); }, ? ?? ?? ?? ?success: function(data){ ? ?? ?? ?? ?? ??console.log(data); ? ?? ?? ?? ?? ??alert("上傳成功"); ? ?? ?? ?? ?? ??url = data.linkurl; }, ? ?? ?? ?? ?error: function(data){ ? ?? ?? ?? ?? ??console.log(data); }, ? ?? ?? ?? ?data:formData, ? ?? ?? ?? ?cache: false, ? ?? ?? ?? ?contentType: false, ? ?? ?? ?? ?processData: false }); }); ? ??function progressHandlingFunction(e){ ? ?? ???if(e.lengthComputable){ ? ?? ?? ?? ?$('progress').attr({value:e.loaded,max:e.total}); } } script>
注意要定義一個全局變量url,因為在請求識別的時候有用到哦!!!!這里的上傳文件的請求,大家可以直接下載貼圖庫的案例,然后按需求再去修改就可以了。
最后看一下效果吧!識別結果不是百分百準確,因為畢竟是免費的嘛
更多Java學習資料可關注:gzitcast
總結
以上是生活随笔為你收集整理的实战腾讯云ORC文字识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C 和 Java 没那么香了,Serve
- 下一篇: UG二次开发GRIP修改颜色