通用印刷体识别 php,实战腾讯云ORC文字识别
本帖最后由 792858525 于 2019-11-8 16:16 編輯
之前弄服務器的時候無意間看到騰訊云有文字識別類的產(chǎn)品,在好奇的驅(qū)動下我點了進去,讓就一發(fā)不可收拾。。。。。。。
廢話不多說,直接開整
首先打開騰訊云的官網(wǎng):https://cloud.tencent.com/
在云產(chǎn)品里找到文字識別
界面.jpg (144.2 KB, 下載次數(shù): 0)
2019-11-8 14:02 上傳
開通業(yè)務后,可以在右上角找到武林秘籍(開發(fā)文檔)
界面2.jpg (86.12 KB, 下載次數(shù): 1)
2019-11-8 14:07 上傳
大致內(nèi)容就是以下幾部分,其實大致看看就好了,不想看的也可以直接掠過(重點)。
通用印刷體識別(精簡版)(免費公測版)
在這篇文章中:1. 接口描述
2. 輸入?yún)?shù)
3. 輸出參數(shù)
4. 示例
示例1 通用印刷體識別(精簡版)示例代碼
5. 開發(fā)者資源
API Explorer
SDK
命令行工具
6. 錯誤碼
1. 接口描述
接口請求域名: ocr.tencentcloudapi.com 。
本接口支持多場景、任意版面下整圖文字的識別。相較于“通用印刷體識別”接口,精簡版接口在準召率有一定損失的情況下,耗時更短。適用于對接口耗時較為敏感的客戶。
默認接口請求頻率限制:10次/秒。2. 輸入?yún)?shù)
以下請求參數(shù)列表僅列出了接口請求參數(shù)和部分公共參數(shù),完整公共參數(shù)列表見 公共請求參數(shù)。[td]參數(shù)名稱必選類型描述
Action是String公共參數(shù),本接口取值:GeneralEfficientOCR
Version是String公共參數(shù),本接口取值:2018-11-19
Region是String公共參數(shù),詳見產(chǎn)品支持的 地域列表,本接口僅支持其中的: ap-beijing, ap-guangzhou, ap-hongkong, ap-shanghai, na-toronto
ImageBase64否String圖片的 Base64 值。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經(jīng)Base64編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片的 ImageUrl、ImageBase64 必須提供一個,如果都提供,只使用 ImageUrl。
ImageUrl否String圖片的 Url 地址。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經(jīng) Base64 編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片存儲于騰訊云的 Url 可保障更高的下載速度和穩(wěn)定性,建議圖片存儲于騰訊云。
非騰訊云存儲的 Url 速度和穩(wěn)定性可能受一定影響。
3. 輸出參數(shù)[td]參數(shù)名稱類型描述
TextDetectionsArray of TextDetection檢測到的文本信息,具體內(nèi)容請點擊左側(cè)鏈接。
RequestIdString唯一請求 ID,每次請求都會返回。定位問題時需要提供該次請求的 RequestId。文檔中心??文字識別??API 文檔??通用文字識別相關(guān)接口??通用印刷體識別(精簡版)(免費公測版)
通用印刷體識別(精簡版)(免費公測版)
在這篇文章中:1. 接口描述
2. 輸入?yún)?shù)
3. 輸出參數(shù)
4. 示例
示例1 通用印刷體識別(精簡版)示例代碼
5. 開發(fā)者資源
API Explorer
SDK
命令行工具
6. 錯誤碼
1. 接口描述
接口請求域名: ocr.tencentcloudapi.com 。
本接口支持多場景、任意版面下整圖文字的識別。相較于“通用印刷體識別”接口,精簡版接口在準召率有一定損失的情況下,耗時更短。適用于對接口耗時較為敏感的客戶。
默認接口請求頻率限制:10次/秒。2. 輸入?yún)?shù)
以下請求參數(shù)列表僅列出了接口請求參數(shù)和部分公共參數(shù),完整公共參數(shù)列表見 公共請求參數(shù)。[td]參數(shù)名稱必選類型描述
Action是String公共參數(shù),本接口取值:GeneralEfficientOCR
Version是String公共參數(shù),本接口取值:2018-11-19
Region是String公共參數(shù),詳見產(chǎn)品支持的 地域列表,本接口僅支持其中的: ap-beijing, ap-guangzhou, ap-hongkong, ap-shanghai, na-toronto
ImageBase64否String圖片的 Base64 值。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經(jīng)Base64編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片的 ImageUrl、ImageBase64 必須提供一個,如果都提供,只使用 ImageUrl。
ImageUrl否String圖片的 Url 地址。
支持的圖片格式:PNG、JPG、JPEG,暫不支持 GIF 格式。
支持的圖片大小:所下載圖片經(jīng) Base64 編碼后不超過 3M。圖片下載時間不超過 3 秒。
圖片存儲于騰訊云的 Url 可保障更高的下載速度和穩(wěn)定性,建議圖片存儲于騰訊云。
非騰訊云存儲的 Url 速度和穩(wěn)定性可能受一定影響。
3. 輸出參數(shù)[td]參數(shù)名稱類型描述
TextDetectionsArray of TextDetection檢測到的文本信息,具體內(nèi)容請點擊左側(cè)鏈接。
RequestIdString唯一請求 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. 開發(fā)者資源API Explorer
該工具提供了在線調(diào)用、簽名驗證、SDK 代碼生成和快速檢索接口等能力,能顯著降低使用云 API 的難度,推薦使用。API 3.0 ExplorerSDK
云 API 3.0 提供了配套的開發(fā)工具集(SDK),支持多種編程語言,能更方便的調(diào)用 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.06. 錯誤碼
以下僅列出了接口業(yè)務邏輯相關(guān)的錯誤碼,其他錯誤碼詳見 公共錯誤碼。[td]錯誤碼描述
FailedOperation.DownLoadError文件下載失敗。
FailedOperation.EmptyImageError圖片內(nèi)容為空。
FailedOperation.ImageDecodeFailed圖片解碼失敗。
FailedOperation.ImageNoText圖片中未檢測到文本。
FailedOperation.OcrFailedOcr識別失敗。
FailedOperation.UnKnowError未知錯誤。
FailedOperation.UnOpenError服務未開通。
InvalidParameterValue.InvalidParameterValueLimit參數(shù)值錯誤。
LimitExceeded.TooLargeFileError文件內(nèi)容太大。
ResourcesSoldOut.ChargeStatusException計費狀態(tài)異常。=================================================================================================
略的同學看到這里!!!!
首先我們來看 ,【輸入?yún)?shù)】
輸入?yún)?shù).jpg (101.24 KB, 下載次數(shù): 0)
2019-11-8 14:16 上傳
紅色區(qū)域的參數(shù)基本上都是寫死的,直接復制后面描述里的內(nèi)容就行了。
黃色區(qū)域的兩個參數(shù)二選一,如果你會將圖片編碼成Base64格式,推薦使用ImageBase64這個參數(shù)
當然不會的話,也可以使用ImageUrl這個參數(shù),相比前者這個會慢一些。
很多同學會說說到這,我還是不會怎么用,沒關(guān)系,慢慢來,淡定!!!!
接下來我們看,【輸出參數(shù)】
很簡單,兩部分,TextDetections??和??RequestId,TextDetections??這個很重要,放到后面講
輸出參數(shù).jpg (34.77 KB, 下載次數(shù): 0)
2019-11-8 14:23 上傳
RequestId 主要就是當出現(xiàn)問題的時候用來定位問題需要的參數(shù)。至于TextDetections 看一下后面實例中的返回參數(shù)自然就懂了
json.jpg (54.08 KB, 下載次數(shù): 0)
2019-11-8 14:31 上傳
我們可以看到返回的數(shù)據(jù)是一個json,可以看到就是TextDetections??和??RequestId兩部分,TextDetections里有五條數(shù)據(jù),就是識別出來的五條數(shù)據(jù)。TextDetections里的參數(shù)代表的意義如下圖:
識別結(jié)果.jpg (67.51 KB, 下載次數(shù): 0)
2019-11-8 14:38 上傳
說了這么久代碼到底該怎么寫
我只能說的,重要的代碼幾乎不用你來寫,看過來!!!
看到開發(fā)文檔的第5點(那里有神器)
工具.jpg (36.14 KB, 下載次數(shù): 0)
2019-11-8 14:44 上傳
打開后看到如下界面,一步一步操作
工具界面.jpg (262.41 KB, 下載次數(shù): 0)
2019-11-8 14:48 上傳
1.選擇你的產(chǎn)品版本
2.選擇開發(fā)語言
3.查看自己的密鑰
4.填寫密鑰
5.選擇地區(qū)
6.添加圖片路徑
7.復制代碼
然后打開idea,創(chuàng)建maven項目,并利用插件轉(zhuǎn)換成web項目(也可以用骨架)
大致項目結(jié)構(gòu)如下
項目結(jié)構(gòu).jpg (38.18 KB, 下載次數(shù): 0)
2019-11-8 14:53 上傳
有關(guān)spring的配置這里不做講解,跟平常一樣沒什么特別的。
看代碼:
packagecom.tencent.controller;importcom.tencentcloudapi.common.Credential;importcom.tencentcloudapi.common.exception.TencentCloudSDKException;importcom.tencentcloudapi.common.profile.ClientProfile;importcom.tencentcloudapi.common.profile.HttpProfile;importcom.tencentcloudapi.ocr.v20181119.OcrClient;importcom.tencentcloudapi.ocr.v20181119.models.GeneralEfficientOCRRequest;importcom.tencentcloudapi.ocr.v20181119.models.GeneralEfficientOCRResponse;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@Controllerpublic classORCController {@RequestMapping(value ="scan",produces ="application/json;charset=UTF-8")@ResponseBody//imageAddr為圖片的路徑,前端調(diào)用傳值。publicString scan(String imageAddr){try{
System.out.println(imageAddr);
Credential cred =newCredential("你的SecretId", "你的SecretKey");
HttpProfile httpProfile = newHttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
ClientProfile clientProfile = newClientProfile();
clientProfile.setHttpProfile(httpProfile);
OcrClient client = newOcrClient(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));
returnGeneralEfficientOCRRequest.toJsonString(resp);
} catch(TencentCloudSDKException e) {
System.out.println(e.toString());
returne.toString();
}
}
}
將之前在線調(diào)試時,代碼main函數(shù)中的內(nèi)容和導包的代碼拷貝下來。注意導包的時候可能會包錯需要在pom.xml中添加騰訊云的依賴文件
com.tencentcloudapi
tencentcloud-sdk-java
3.0.101
看到前端請求,前端有個問題,因為上傳圖片的地址只能是url,所以對于沒有服務器沒有域名的我該怎么辦,于是我到網(wǎng)上找到了一個可以上傳的網(wǎng)絡相冊,大家可以自己到網(wǎng)上搜索,我使用的那個叫做帖圖庫,同樣有開發(fā)文檔和實例
bar.jpg (27.06 KB, 下載次數(shù): 0)
2019-11-8 15:05 上傳
然后就是編寫前端頁面啦,這里我使用的是bootstrap+jQuery來寫的jsp。這里就只放出識別請求和上傳圖片的js代碼,頁面大家可以按自己的需求編寫發(fā)送請求到后臺識別文字
$(function() {
scan();
});
varurl;
functionscan() {
$("#scanBtn").click(function() {
$.ajax({
url:"/scan.do",
data:{"imageAddr":url},
success:function(reasult) {
varstr="";
vardatas= reasult.TextDetections;
for(itemofdatas){
str+=item.DetectedText+"
";
}
$("#getReasult").html(str);
}
});
});
}
上傳圖片的請求
$(':button').click(function(){
varformData= newFormData($('form')[0]);
$.ajax({
url: 'http://up.imgapi.com/',
type: 'POST',
xhr: function() {
myXhr= $.ajaxSettings.xhr();
if(myXhr.upload){
myXhr.upload.addEventListener('progress',progressHandlingFunction, false);
}
returnmyXhr;
},
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});
});
functionprogressHandlingFunction(e){
if(e.lengthComputable){
$('progress').attr({value:e.loaded,max:e.total});
}
}
注意要定義一個全局變量url,因為在請求識別的時候有用到哦!!!!這里的上傳文件的請求,大家可以直接下載貼圖庫的案例,然后按需求再去修改就可以了。
最后看一下效果吧!識別結(jié)果不是百分百準確,因為畢竟是免費的嘛
test1.jpg (32.16 KB, 下載次數(shù): 0)
2019-11-8 15:17 上傳
test2.jpg (68.57 KB, 下載次數(shù): 0)
2019-11-8 15:17 上傳
test3.jpg (60.56 KB, 下載次數(shù): 0)
2019-11-8 15:18 上傳
可以看到,識別出來的文字,還是有一點點問題的。好了就到這里,有什么問題下面留言,看到了我會回復的。
第一次弄這個,有什么做錯了或者做的不好的地方,望見諒,大神勿噴!!!
總結(jié)
以上是生活随笔為你收集整理的通用印刷体识别 php,实战腾讯云ORC文字识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php抓取搜狗图片,动手抓取搜狗搜索引擎
- 下一篇: matlab分类器设计,简单分类器的MA