基于百度API的OCR(文字识别)的python实现

先前在自己电脑上用c++实现了“基于百度API的OCR实现”,不得不说,那是一个痛苦的过程,配置libcurl库
openssl库等,配置完了之后才可以按照例程写代码,真的是非常麻烦,今天闲来无事,看到python实现比较简单,所以就考虑用python实现。关于c++实现的各类库,请移步:传送门 或者留言小哥,小哥发给你也可以~
因为我对例程进行了改进,最后的代码是利用opencv调用电脑摄像头,按下空格键捕获当前界面进行文字识别,按下esc按键退出程序

    下面我们就步入今天的正题——python实现。
    环境:win10、pycharm、python3.7.1

    我们按照官方教程来逐渐配置:官方教程地址     对于官方教程前面的API文档等内容,看看就好,因为我先前用c++实现的时候已经了解过了,所以这里就直接上手,没有看文档。下面分几个步骤来实现。

1.在控制台注册ID

    调用百度API都需要在控制台注册ID,获得APPID AK SK。这样才能用接口。先在刚才那个官方教程的右上角点击:控制台:

python pyplot axex text 指定文字位置_python

    接着在控制台页面选择 产品服务-文字识别,点击进入

python pyplot axex text 指定文字位置_python_02


    进入之后,点击创建应用即可:

python pyplot axex text 指定文字位置_百度API_03


    接着按照上面的要求填写即可获得APPID AK SK。

2.OCR python sdk

    不像c++需要配置繁琐的库那样,python只需要用pip指令安装百度API即可:

python pyplot axex text 指定文字位置_python_04


    具体做法是:win+R,输入cmd打开命令行窗口,输入pip回车查看是否已经安装pip指令,高版本的python已经自动安装pip,如果已经安装pip,输入指令之后会出现:

python pyplot axex text 指定文字位置_python_05


    如果出现“不是内部或外部指令,也不是可运行的程序或批处理文件”,则说明没有安装pip,关于安装pip的教程请移步:win下pip安装教程

    安装好pip之后,按照教程 只需要 pip install baidu-aip 即可。如下图所示:

python pyplot axex text 指定文字位置_opencv_06


    输入指令之后,会自动下载包并且安装,安装好之后如上图所示。其实到这里就已经完成了一大半,是不是很简单呀~

    其实在这里还需要安装opencv,在开头就提到了opencv的用处,就是用来打开摄像头,这里直接在命令行窗口像安装百度api那样,直接:pip install opencv-python即可。如下图所示:

python pyplot axex text 指定文字位置_opencv_07

3.新建client,写代码

    实际上这一步就是撸!代!码!这里就直接贴出来代码,代码里面有注释的~

import cv2
import time

from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = "你的APP ID"
API_KEY = "你的API KEY"
SECRET_KEY = "你的 SK"

#新建客户端
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
cap=cv2.VideoCapture(0)
while (1):
    ret,frame=cap.read()
    cv2.imshow("capture",frame)
    if cv2.waitKey(1)& 0xFF==32:  #按下空格键捕获当前画面
        cv2.imwrite("test.jpg",frame) #将画面写入工程路径

        image = get_file_content('test.jpg')#读取捕获的界面

        """ 调用通用文字识别, 图片参数为本地图片 """
        result_dict={}  #新建一个空词典
        # result_dict=client.basicGeneral(image)
        """ 可选参数 支持中英文和方向检测 """
        options = {}
        options["language_type"] = "CHN_ENG"
        options["detect_direction"] = "true"
        options["detect_language"] = "true"

        """ 带参数调用通用文字识别, 图片参数为本地图片 """
        result_dict=client.basicGeneral(image, options)#返回结果是一个字典
        # print(result_dict)
        result_list=[]  #新建一个提取结果的词典
        result_list=result_dict["words_result"]
        # print(result_list)
        """从列表中提取最终的结果"""
        result_string=""
        for item in result_list:
            for str in item:
                result_string=result_string+item[str]+" "
        print(result_string)
        """按下esc退出"""
    elif cv2.waitKey(10)& 0xFF==27 :
        cap.release()
        break;

运行结果

python pyplot axex text 指定文字位置_python_08


python pyplot axex text 指定文字位置_python_09