前言:进行一个OCR的任务,决定采用阿里云的OCR API,奈何阿里云的文档有些零散,这篇文章将整理一下流程和相关链接,其他api调用可以参考。
准备
1.注册阿里云账号
2.生成AccessKey
这两部分比较简单,这里不再赘述
1.环境配置
首先是SDK安装,链接:阿里云视觉开放平台/SDK参考
核心库:
pip3 install aliyun-python-sdk-core
API相关库:
pip3 install aliyun-python-sdk-ocr
这样按照示例代码已经可以运行了(来源:阿里云SDK文档)
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230 import RecognizeCharacterRequest
# 创建 AcsClient 实例
client = AcsClient("<your-access-key-id>", "<your-access-key-secret>", "cn-shanghai")
# 通用识别
request = RecognizeCharacterRequest.RecognizeCharacterRequest();
request.set_MinHeight(10);
request.set_OutputProbability(True);
## 如下url替换为自有的上海region的oss文件地址
request.set_ImageURL("https://viapi-demo.oss-cn-shanghai-internal.aliyuncs.com/viapi-demo/images/RecognizeCharacter/recognizeCharacter_demo.jpg")
response = client.do_action_with_exception(request)
print(response)
但是这里还需要本地图片生成url的问题。
2.图片生成URL
参考:阿里云视觉智能开放平台/快速入门/生成URL
首先还是安装一些库:
pip3 install oss2
pip3 install aliyun-python-sdk-viapiutils
pip3 install aliyun-python-sdk-core
pip3 install viapi-utils
这样按照示例代码可以生成URL(来源:阿里云SDK文档)
from viapi.fileutils import FileUtils
file_utils = FileUtils("your own accessKey","your own accessSecret")
oss_url = file_utils.get_oss_url("http://xxx.jpeg","jpg",False)
print(oss_url)
oss_url = file_utils.get_oss_url("/home/xxx.mp4","mp4",True)
print(oss_url)
大功告成。
3.完整代码
from aliyunsdkcore.client import AcsClient
from aliyunsdkocr.request.v20191230.RecognizeCharacterRequest import RecognizeCharacterRequest
from viapi.fileutils import FileUtils
your_AccessKey_id = ''
your_AccessKey_Secret = ''
# 初始化
file_utils = FileUtils(your_AccessKey_id, your_AccessKey_Secret)
client = AcsClient(your_AccessKey_id, your_AccessKey_Secret, 'cn-shanghai')
# 生成URL
png_path = ''
oss_url = file_utils.get_oss_url(png_path, "png", True)
# ORC设置
request = RecognizeCharacterRequest()
request.set_accept_format('json')
request.set_ImageURL(oss_url)
request.set_MinHeight(8)
request.set_OutputProbability(False)
# OCR
response = client.do_action_with_exception(request)
# 解析
node_list = eval(str(response, 'utf-8'))["Data"]["Results"]