python:ocr图文识别(百度智能云API文字识别)

文章目录

  • 前言
  • 一、创建账号和应用
  • 二、具体步骤
    • 1.第一种方式:
    • 2.第二种方式
  • 总结

前言

说道OCR图文识别,其实python也有在自己的库(以下是我了解,应该还有很多):
第一个 tesserocr:个人感觉不好用,精确度不高,实例代码如下:

import tesserocr
from PIL import Image

#coding=utf-8

image = Image.open('img.jpg')
result = tesserocr.image_to_text(image)
print(result)

第二个 cn识别库,虽然比前者好一点,但还是差强人意,附上实例代码,记得先安装库:

from cnstd import CnStd
from cnocr import CnOcr

std = 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相关代码:
python:ocr图文识别(百度智能云API文字识别)_第1张图片
说实话,有的我也看不懂,我就按照我的理解写一下:

import os
from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = ''#填入你的AppID
API_KEY = ''#填入你的API Key
SECRET_KEY = ''#填入你的Secret Key

client = 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.第二种方式

第二种方式精确度不高,但是免费次数很多,通常我都用这个
python:ocr图文识别(百度智能云API文字识别)_第2张图片
也给了代码示例,按照我的理解,代码如下:

import requests
import base64
import io
import sys
import os
import json

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')
'''
通用文字识别
'''
host = 'https://aip.baidubce.com/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).text
jsonData = json.loads(response1)
access_token = jsonData["access_token"]#获取access_token中内容
#获取图片网址信息


url = "https://………….jpg"#图片网址

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"

imgData = requests.get(url).content
img_data = base64.b64encode(imgData)
params = {"image": img_data}
request_url = request_url + "?access_token=" + access_token
headers = {'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识别还是很有作用的,如有不足的,一起交流学习!

你可能感兴趣的:(python,图像识别)