文章目录
前言一、创建账号和应用二、具体步骤1.第一种方式:2.第二种方式总结前言
说道OCR图文识别,其实python也有在自己的库(以下是我了解,应该还有很多):
第一个 tesserocr:个人感觉不好用,精确度不高,实例代码如下:
import tesserocrfrom PIL import Image#coding=utf-8image = Image.open('img.jpg')result = tesserocr.image_to_text(image)print(result)
第二个 cn识别库,虽然比前者好一点,但还是差强人意,附上实例代码,记得先安装库:
from cnstd import CnStdfrom cnocr import CnOcrstd = CnStd()cn_ocr = CnOcr()box_info_list = std.detect('01.jpg')#图片文件for box_info in box_info_list:cropped_img = box_info['cropped_img'] # 检测出的文本框ocr_res = cn_ocr.ocr_for_single_line(cropped_img)print('ocr result: %s' % ''.join(ocr_res))
在这些情况都不行的情况下,我想着能不能接入第三方接口,那样效果会不会更好一点,所以我最后选择了百度智能云的OCR接口,免费次数给的多,不用白不用。
一、创建账号和应用
首先你得创建账号,这个就不说了,
创建应用登陆首页 点击管理控制台=》产品服务=》文字识别=》创建应用,接着填写一下就完成了
最后到这个界面:
获得重要的参数AppID,API Key,Secret Key后面做准备。
记得安装一下模块:
pip install baidu-aip
二、具体步骤
1.第一种方式:
账号密码登陆,也可以说是高精确度版本的,看一下他给的python相关代码:
说实话,有的我也看不懂,我就按照我的理解写一下:
import osfrom aip import AipOcr""" 你的 APPID AK SK """APP_ID = ''#填入你的AppIDAPI_KEY = ''#填入你的API KeySECRET_KEY = ''#填入你的Secret Keyclient = AipOcr(APP_ID, API_KEY, SECRET_KEY)""" 读取图片 """def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()with open('03.jpg', 'rb') as f:image = f.read()dict = client.basicAccurate(image)#结果是字典,包含一些日志print(dict)
2.第二种方式
第二种方式精确度不高,但是免费次数很多,通常我都用这个
也给了代码示例,按照我的理解,代码如下:
import requestsimport base64import ioimport sysimport osimport jsonsys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')'''通用文字识别'''host = '/oauth/2.0/token?grant_type=client_credentials&client_id=API Key&client_secret=Secret Key'#鉴权使用的Access_token必须通过API Key和Secret Key获取,对应你的API Key,Secret Key填入host种response1 = requests.get(host).textjsonData = json.loads(response1)access_token = jsonData["access_token"]#获取access_token中内容#获取图片网址信息url = "https://………….jpg"#图片网址request_url = "/rest/2.0/ocr/v1/general_basic"imgData = requests.get(url).contentimg_data = base64.b64encode(imgData)params = {"image": img_data}request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response2 = requests.post(request_url, data=params, headers=headers)if response2:dict = response2.json()words = dict["words_result"]#取出识别内容word_list = []for word in words:word_list.append(word["words"])list1 = [str(i) for i in word_list]for i in list1:print(i)
总结
ocr识别还是很有作用的,如有不足的,一起交流学习!