一、写在前面
最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想。
随后上网搜了一下OCR接口,就准备使用腾讯云、百度的OCR接口试一下效果。不过这个腾讯云OCR就折腾了一天!
二、OCR-通用印刷体识别
首先附上文档地址:OCR-通用印刷体识别。
1、通用OCR简介
通用OCR技术提供图片整体文字的检测和识别服务,返回文字框位置与文字内容。支持多场景、任意版面下整图文字的识别,以及中英文、字母、数字的识别。被广泛应用于印刷文档识别、广告图文字识别、街景店招识别、菜单识别、视频标题识别、互联网头像文字识别等。
2、接口url地址
http://recognition.image.myqcloud.com/ocr/general
3、请求包header
接口采用http协议,支持指定图片URL和上传本地图片文件两种方式。
所有请求都要求含有下列的头部信息:
Host、Content-Length、Content-Type、Authorization
三、示例
1、使用 url 的请求包
1 2 3 4 5 6 7 8 9 10 |
POST /ocr/general HTTP/1.1 Authorization: FCHXdPTEwMDAwMzc5Jms9QUtJRGVRZDBrRU1yM2J4ZjhRckJi== Host: recognition.image.myqcloud.com Content-Length: 187 Content-Type: application/json {
"appid":"123456", "bucket":"test", "url":"http://test-123456.image.myqcloud.com/test.jpg" } |
这个url是万象优图中图片的url地址。
看到这种格式,心里大概有数了,开始敲代码。
2、具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
HttpClient client = new HttpClient(); var para = new {
appid = "123456", bucket = "test", url = "http://test-123456.image.myqcloud.com/test.jpg" }; var jsonPara = JsonConvert.SerializeObject(para); StringContent content = new StringContent(jsonPara); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); content.Headers.ContentLength = jsonPara.Length; content.Headers.Add("Host", "recognition.image.myqcloud.com"); content.Headers.Add("Authorization", aut); var taskHrm = client.PostAsync(postUrl, content); taskHrm.Wait(); var taskStr = taskHrm.Result.Content.ReadAsStringAsync(); taskStr.Wait(); var result = taskStr.Result; |
F5运行,结果报错了: