小隐的博客

人生在世,笑饮一生
随笔 - 304, 文章 - 0, 评论 - 349, 阅读 - 50万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

学习Python3 试了一下百度OCR和腾讯OCR

Posted on   隐客  阅读(7097)  评论(0编辑  收藏  举报

因为有个小功能,需要用一下OCR,所以先找了2家,百度和腾讯,如何开通,如何创建应用获得key等不作说明了

 

百度的比较简单,引用一个AipOcr全部搞定,代码如下:

复制代码
from aip import AipOcr

#下面3个变量请自行更改
APP_ID = '1111118'
API_KEY = 'r011111111iAfy'
SECRET_KEY = 'ZKca1111111DK5XZrq'

aipOcr  = AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片
filePath = "d:/temp/0001.png"
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

# 定义参数变量
options = {
  'detect_direction': 'true',
  'language_type': 'CHN_ENG',
}

# 调用通用文字识别接口
result = aipOcr.basicAccurate(get_file_content(filePath), options)

print(result)
复制代码

腾讯的比较坑B,有python的库,但是2.0的,这不重要,重要的是python的库中其它的识别有,但没有识别印刷体的,需要用http去请求,去NM的。

可能是刚学python,在ocr请求中的签名让我弄了一整天,MD,网上那些的签名都是别的应用的,总之难死我了

后来,下载了它们的java版的sdk,看了一下他们的签名代码,然后经过结果比对,总算弄出来了

全部代码如下:

复制代码
import requests
import hmac
import hashlib
import base64
import time
import random


appid =  '12111173'
bucket = ""
secret_id ='AKIDI111RAjYU' # 参考官方文档
secret_key = 'S2iRe011111iM6xlHo'  # 同上

expired = time.time() + 2592000
onceExpired = 0
current = time.time()
rdm = ''.join(random.choice("0123456789") for i in range(10))
info = "a=" + appid + "&b=" + bucket + "&k=" + secret_id + "&e=" + str(expired) + "&t=" + str(current) + "&r=" + str(rdm) + "&u=0&f="
print(info)
signature = bytes(info, encoding='utf-8')
secretkey = bytes(secret_key, encoding='utf-8')
my_sign = hmac.new(secretkey,signature, hashlib.sha1).digest()
bb= my_sign+signature
sign1 = base64.b64encode(bb)
sign2=str(sign1,'utf-8')
print(sign2)
url = "http://recognition.image.myqcloud.com/ocr/general"
headers = {'Host': 'recognition.image.myqcloud.com',
           "Authorization": sign2 ,
           }
files = {'appid': (None, appid),
         'bucket': (None, bucket),
         'image': ('1.jpg', open('d:/temp/0001.png', 'rb'), 'image/jpeg')
         }

r = requests.post(url, files=files, headers=headers)
responseinfo = r.content

print(responseinfo)
复制代码

 

识别同一个图片,百度的竟然比不过,明显的一个USD识别成了JSD,我ca。。。。。

 

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2010-08-03 asp.net 导出excel 问题 (服务器的部署)
QQ交流
点击右上角即可分享
微信分享提示