文字识别OCR里python的demo,怎么上传一张图片拿到识别结果啊?
文字识别OCR服务通常提供了一种API接口,通过这种接口,开发者可以使用HTTP请求将图片发送到服务器,并接收返回的文字识别结果。在Python中,你可以使用urllib或requests等库来发送HTTP请求,并使用json库来解析返回的结果。
以下是一个简单的Python demo,展示了如何上传一张图片并获取识别结果:
import urllib.request
import urllib.parse
import json
import time
import base64
# 本地图片
image_path = '改成你的图片存放的路径' # 例如:'C:\\Users\\xxx\\Pictures\\test.jpg'
with open(image_path, 'rb') as f:
# 以二进制读取本地图片
data = f.read()
# 对图片进行Base64编码
encodestr = str(base64.b64encode(data), 'utf-8')
# 请求头信息,包含Authorization和Content-Type
headers = {
'Authorization': 'APPCODE 9c68cf90de3941b1b4364bd713c0725e', # 替换为你的AppCode
'Content-Type': 'application/json; charset=UTF-8'
}
# 构建请求参数
params = {
'img': encodestr # 将编码后的图片数据作为img参数发送
}
# 发送POST请求
url = 'https://ocrapi-advanced.taobao.com/ocrservice/advance' # 这里应替换为实际的OCR服务接口地址
try:
response = urllib.request.post(url, data=params, headers=headers)
html = response.read()
r.close() # 关闭响应对象
except urllib.error.HTTPError as e:
print(e.code)
print(e.read().decode('utf-8'))
time.sleep(1) # 等待一秒后继续
# 解码HTML内容为文本
result = html.decode('utf-8')
# 打印识别结果
print('识别的结果:')
print(result)
# 以下代码用于处理API返回的JSON数据
# jos = json.loads(html)
# result = jos['data']
# print('识别的结果:')
# print(result)
在上述代码中,你需要将image_path
变量指向你要识别的图片文件路径,以及将headers
中的Authorization
值替换为你自己的AppCode。代码使用了urllib.request库的post方法发送POST请求到指定的OCR服务接口地址,并带上请求头和参数。执行结果将打印出识别出的文字内容。
请确保已经安装了所需的库,例如urllib和base64,如果尚未安装,可以使用pip install命令来安装。此外,阿里云OCR服务可能需要付费使用,具体费用和限制请咨询阿里云官方文档。
登录,输入请求参数,即可生成demo,可以直接点击发起调用测试,
https://next.api.aliyun.com/api/ocr-api/2021-07-07/RecognizeAdvanced?sdkStyle=dara¶ms={}&lang=JAVA
,也可以下载完整工程参照readme运行。
此回答来自钉群【官方】阿里云OCR公共云客户交流群。
在文字识别OCR中,您可以使用阿里云提供的Python SDK来上传图片并获取识别结果。以下是一个简单的示例代码:
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230 import OcrGeneralRequest
import json
# 创建AcsClient实例
client = AcsClient('<accessKeyId>', '<accessSecret>', '<regionId>')
# 创建request对象并设置参数
request = OcrGeneralRequest.OcrGeneralRequest()
request.set_accept_format('json')
request.set_ImageURL("<imageUrl>") # 设置需要识别的图片URL
request.set_side_effect_type("none") # 设置识别后返回的文本格式为json
request.set_recognize_granularity("word") # 设置识别粒度为单词级别
request.set_scene("idcard") # 设置场景为身份证识别
# 发起请求并获取response对象
response = client.do_action(request)
# 解析response中的JSON数据并输出识别结果
print(json.loads(response))
在上面的代码中,您需要将<accessKeyId>
、<accessSecret>
和<regionId>
替换为您自己的阿里云账号信息,将<imageUrl>
替换为您需要识别的图片URL。此外,您还可以根据需要修改其他参数,例如set_side_effect_type
用于设置返回的文本格式,set_recognize_granularity
用于设置识别粒度,set_scene
用于设置场景等。最后,通过调用client.do_action(request)
方法发起请求并获取响应对象,然后解析其中的JSON数据即可得到识别结果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。