本帖最后由 792858525 于 2019-11-8 16:16 编辑
之前弄服务器的时候无意间看到腾讯云有文字识别类的产品,在好奇的驱动下我点了进去,让就一发不可收拾。。。。。。。
废话不多说,直接开整
首先打开腾讯云的官网:https://cloud.tencent.com/
在云产品里找到文字识别
界面.jpg (144.2 KB, 下载次数: 0)
2019-11-8 14:02 上传
开通业务后,可以在右上角找到武林秘籍(开发文档)
界面2.jpg (86.12 KB, 下载次数: 1)
2019-11-8 14:07 上传
大致内容就是以下几部分,其实大致看看就好了,不想看的也可以直接掠过(重点)。
通用印刷体识别(精简版)(免费公测版)
在这篇文章中: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]参数名称类型描述
TextDetectionsArray of TextDetection检测到的文本信息,具体内容请点击左侧链接。
RequestIdString唯一请求 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]参数名称类型描述
TextDetectionsArray of TextDetection检测到的文本信息,具体内容请点击左侧链接。
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. 开发者资源API Explorer
该工具提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 的难度,推荐使用。API 3.0 ExplorerSDK
云 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.06. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。[td]错误码描述
FailedOperation.DownLoadError文件下载失败。
FailedOperation.EmptyImageError图片内容为空。
FailedOperation.ImageDecodeFailed图片解码失败。
FailedOperation.ImageNoText图片中未检测到文本。
FailedOperation.OcrFailedOcr识别失败。
FailedOperation.UnKnowError未知错误。
FailedOperation.UnOpenError服务未开通。
InvalidParameterValue.InvalidParameterValueLimit参数值错误。
LimitExceeded.TooLargeFileError文件内容太大。
ResourcesSoldOut.ChargeStatusException计费状态异常。=================================================================================================
略的同学看到这里!!!!
首先我们来看 ,【输入参数】
输入参数.jpg (101.24 KB, 下载次数: 0)
2019-11-8 14:16 上传
红色区域的参数基本上都是写死的,直接复制后面描述里的内容就行了。
黄色区域的两个参数二选一,如果你会将图片编码成Base64格式,推荐使用ImageBase64这个参数
当然不会的话,也可以使用ImageUrl这个参数,相比前者这个会慢一些。
很多同学会说说到这,我还是不会怎么用,没关系,慢慢来,淡定!!!!
接下来我们看,【输出参数】
很简单,两部分,TextDetections 和 RequestId,TextDetections 这个很重要,放到后面讲
输出参数.jpg (34.77 KB, 下载次数: 0)
2019-11-8 14:23 上传
RequestId 主要就是当出现问题的时候用来定位问题需要的参数。至于TextDetections 看一下后面实例中的返回参数自然就懂了
json.jpg (54.08 KB, 下载次数: 0)
2019-11-8 14:31 上传
我们可以看到返回的数据是一个json,可以看到就是TextDetections 和 RequestId两部分,TextDetections里有五条数据,就是识别出来的五条数据。TextDetections里的参数代表的意义如下图:
识别结果.jpg (67.51 KB, 下载次数: 0)
2019-11-8 14:38 上传
说了这么久代码到底该怎么写
我只能说的,重要的代码几乎不用你来写,看过来!!!
看到开发文档的第5点(那里有神器)
工具.jpg (36.14 KB, 下载次数: 0)
2019-11-8 14:44 上传
打开后看到如下界面,一步一步操作
工具界面.jpg (262.41 KB, 下载次数: 0)
2019-11-8 14:48 上传
1.选择你的产品版本
2.选择开发语言
3.查看自己的密钥
4.填写密钥
5.选择地区
6.添加图片路径
7.复制代码
然后打开idea,创建maven项目,并利用插件转换成web项目(也可以用骨架)
大致项目结构如下
项目结构.jpg (38.18 KB, 下载次数: 0)
2019-11-8 14:53 上传
有关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为图片的路径,前端调用传值。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();
}
}
}
将之前在线调试时,代码main函数中的内容和导包的代码拷贝下来。注意导包的时候可能会包错需要在pom.xml中添加腾讯云的依赖文件
com.tencentcloudapi
tencentcloud-sdk-java
3.0.101
看到前端请求,前端有个问题,因为上传图片的地址只能是url,所以对于没有服务器没有域名的我该怎么办,于是我到网上找到了一个可以上传的网络相册,大家可以自己到网上搜索,我使用的那个叫做帖图库,同样有开发文档和实例
bar.jpg (27.06 KB, 下载次数: 0)
2019-11-8 15:05 上传
然后就是编写前端页面啦,这里我使用的是bootstrap+jQuery来写的jsp。这里就只放出识别请求和上传图片的js代码,页面大家可以按自己的需求编写发送请求到后台识别文字
$(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,因为在请求识别的时候有用到哦!!!!这里的上传文件的请求,大家可以直接下载贴图库的案例,然后按需求再去修改就可以了。
最后看一下效果吧!识别结果不是百分百准确,因为毕竟是免费的嘛
test1.jpg (32.16 KB, 下载次数: 0)
2019-11-8 15:17 上传
test2.jpg (68.57 KB, 下载次数: 0)
2019-11-8 15:17 上传
test3.jpg (60.56 KB, 下载次数: 0)
2019-11-8 15:18 上传
可以看到,识别出来的文字,还是有一点点问题的。好了就到这里,有什么问题下面留言,看到了我会回复的。
第一次弄这个,有什么做错了或者做的不好的地方,望见谅,大神勿喷!!!