欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-16 11:02:46
...

前言

说道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接口,免费次数给的多,不用白不用。

一、创建账号和应用

首先你得创建账号,这个就不说了,
创建应用登陆首页 点击管理控制台=》产品服务=》文字识别=》创建应用,接着填写一下就完成了
最后到这个界面:python:ocr图文识别(百度智能云API文字识别)
获得重要的参数AppID,API Key,Secret Key后面做准备。
记得安装一下模块:

pip install baidu-aip

二、具体步骤

1.第一种方式:

账号密码登陆,也可以说是高精确度版本的,看一下他给的python相关代码:
python:ocr图文识别(百度智能云API文字识别)
说实话,有的我也看不懂,我就按照我的理解写一下:

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文字识别)
也给了代码示例,按照我的理解,代码如下:

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 图像识别