python+百度OCR的使用方法(踩坑+测试程序)

一、注册百度智能云并在本地安装百度智能云模块

百度智能云网址,注册好账号后进入百度智能云,点击右上角的管理控制台。
在这里插入图片描述
进入控制台后,按照下图方式,找到文字识别,点击进入。(若要使用其他api,自行选择即可)
在这里插入图片描述
进入文字识别部分后,在左侧菜单选择“概述”,在此界面点击右侧领取免费资源,将里面能勾选的都选了就行。选完后返回,会和下图显示的一样,资源列表里出现了刚刚我们选的api。
在这里插入图片描述
之后载应用列表里创建一个应用
在这里插入图片描述
创建完成后列表里会出现此应用信息,这三个信息一会要加入在咱们程序里,不要找不到地方哦。
在这里插入图片描述
之后要在本地安装百度智能云模块,建议在pycharm的虚拟环境里安装,以防止出现No module named 'aip’的问题。
在命令行中输入pip install baidu-aip,安装即可。
在这里插入图片描述

二、提示No module named 'aip’问题

若未在pycharm中安装,可能会出现如下报错。应该是模块有冲突,有两个方法解决。
在这里插入图片描述
第一个方法就是去pycharm里建个工程,在其Terminal中安装baidu-aip。这里面是虚拟环境,工程里安装的第三方库不会与本地安装的其他库起冲突。
第二个方法,可以运行cmd,在命令行中输入pip uninstall aip,卸载aip模块。(本小白不清楚python的aip模块是啥,所以没敢卸载,选择了方法一)

三、提示No module named 'chardet’问题

处理完上述问题后,本小白还出现了“No module named ‘chardet’”的报错,少模块咱安装就完事了。
直接pip install chardet,解决。若还出现其他缺失模块的报错,根据报错信息依次安装即可。

四、测试代码

关键的几句代码:

from aip import AipOcr

APP_ID = '填自己创建的应用的ID'   #填自己的信息,在上文所述的位置理由
API_KEY = '如上'
SECRET_KEY = '如上'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
image = get_file_content(filePath)    #读取图像
result = client.basicGeneral(image)   #调用百度的api,返回识别的信息
print(result['words_result'])  #识别的信息打印

这是本小白根据自身需要,将图片信息识别并筛选到指定excel的程序。

from aip import AipOcr
import cv2
import xlwings as xw
import os
import shutil

Filepath = r"C:\Users\Administrator\Desktop\图片"
app = xw.App(visible=False, add_book=False)
wb = app.books.open(r"F:\python_test\baidu_OCR\sum.xlsx")
wb.sheets[0].range("A:C").api.NumberFormat = "@" 					 # 文本格式,若不设置身份证信息等会被隐藏
sht = wb.sheets[0]
sht_row = sht.used_range.last_cell.row
sht_column = sht.used_range.last_cell.column

APP_ID = '填自己创建的应用的ID'   #填自己的信息,在上文所述的位置理由
API_KEY = '如上'
SECRET_KEY = '如上'

str2 = ""
num = 1
row_line = 1

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
#img = cv2.imread(filePath, 1) 								#图片压缩,图片上传有要求不能超过4M
#cv2.imwrite(filePath, img, [cv2.IMWRITE_JPEG_QUALITY, 80])

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

def shibie(filePath):
    global num
    global row_line
    image = get_file_content(filePath)    #读取图像
    result = client.basicGeneral(image)   #调用百度的api,返回识别的信息
    if( num % 2 == 0):
    	num = num + 1
        row_line = row_line + 1
    for item in result['words_result']:  #对识别的结果进行筛选
        str1 = item['words']
        if( and (len(str1) >= 2):  #去除一些干扰信息,将需要的信息复制到excl中
            if( len(str1) == 11 ):
                sht.range("C{}".format(row_line - 1 )).value = str1
            elif( num % 2 == 1):
                sht.range("A{}".format(row_line)).value = str1
                num = num + 1
            elif( num % 2 == 0):
                sht.range("B{}".format(row_line)).value = str1
                num = num + 1
                row_line = row_line + 1
    print("完成")

new_file = r"C:\Users\Administrator\Desktop\图片测试"
for root, dirs, files in os.walk(Filepath):
    # root 表示当前正在访问的文件夹路径# dirs 表示该文件夹下的子目录名list
    # files 表示该文件夹下的文件list # 遍历文件
    for f in files:
        file_path = os.path.join(root, f)
        print(file_path)
        if (file_path.endswith(".jpg") == True):
            shibie(file_path)
            dst = os.path.join(new_file, os.path.basename(file_path))
            shutil.move(file_path, dst)  #一副图片处理完后移动到另一个文件夹

sht.autofit(axis="columns")
wb.save()
wb.close()
app.kill()


  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值