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

mac2025-03-04  5

基于百度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。这样才能用接口。先在刚才那个官方教程的右上角点击:控制台:

    接着在控制台页面选择 产品服务-文字识别,点击进入     进入之后,点击创建应用即可:     接着按照上面的要求填写即可获得APPID AK SK。

2.OCR python sdk

    不像c++需要配置繁琐的库那样,python只需要用pip指令安装百度API即可:     具体做法是:win+R,输入cmd打开命令行窗口,输入pip回车查看是否已经安装pip指令,高版本的python已经自动安装pip,如果已经安装pip,输入指令之后会出现:     如果出现“不是内部或外部指令,也不是可运行的程序或批处理文件”,则说明没有安装pip,关于安装pip的教程请移步:win下pip安装教程。     安装好pip之后,按照教程 只需要 pip install baidu-aip 即可。如下图所示:     输入指令之后,会自动下载包并且安装,安装好之后如上图所示。其实到这里就已经完成了一大半,是不是很简单呀~     其实在这里还需要安装opencv,在开头就提到了opencv的用处,就是用来打开摄像头,这里直接在命令行窗口像安装百度api那样,直接:pip install opencv-python即可。如下图所示:

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;

运行结果

最新回复(0)