Python基于百度API识别并提取图片中文字


Posted in Python onJune 27, 2021

利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字。首先需注册获取 API 调用的 ID 和 key,步骤如下:

打开百度AI开放平台,进入控制台中的文字识别应用(需要有百度账号)。

Python基于百度API识别并提取图片中文字

创建一个应用,并进入管理应用,记下 AppID, API Key, Secrect Key,调用 API需用到。

Python基于百度API识别并提取图片中文字

Python基于百度API识别并提取图片中文字

最后安装 python 的百度ai接口的的库

pip install baidu-aip

以下是代码实现,需将所有识别的图片放进名为 picture 的文件夹。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 12 09:37:38 2018
利用百度api实现图片文本识别
@author: XnCSD
"""

import glob
from os import path
import os
from aip import AipOcr
from PIL import Image

def convertimg(picfile, outdir):
    '''调整图片大小,对于过大的图片进行压缩
    picfile:    图片路径
    outdir:    图片输出路径
    '''
    img = Image.open(picfile)
    width, height = img.size
    while(width*height > 4000000):  # 该数值压缩后的图片大约 两百多k
        width = width // 2
        height = height // 2
    new_img=img.resize((width, height),Image.BILINEAR)
    new_img.save(path.join(outdir,os.path.basename(picfile)))
    
def baiduOCR(picfile, outfile):
    """利用百度api识别文本,并保存提取的文字
    picfile:    图片文件名
    outfile:    输出文件
    """
    filename = path.basename(picfile)
    
    APP_ID = '******' # 刚才获取的 ID,下同
    API_KEY = '******'
    SECRECT_KEY = '******'
    client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
    
    i = open(picfile, 'rb')
    img = i.read()
    print("正在识别图片:\t" + filename)
    message = client.basicGeneral(img)   # 通用文字识别,每天 50 000 次免费
    #message = client.basicAccurate(img)   # 通用文字高精度识别,每天 800 次免费
    print("识别成功!")
    i.close();
    
    with open(outfile, 'a+') as fo:
        fo.writelines("+" * 60 + '\n')
        fo.writelines("识别图片:\t" + filename + "\n" * 2)
        fo.writelines("文本内容:\n")
        # 输出文本内容
        for text in message.get('words_result'):
            fo.writelines(text.get('words') + '\n')
        fo.writelines('\n'*2)
    print("文本导出成功!")
    print()

if __name__ == "__main__":
    
    outfile = 'export.txt'
    outdir = 'tmp'
    if path.exists(outfile):
        os.remove(outfile)
    if not path.exists(outdir):
        os.mkdir(outdir)
    print("压缩过大的图片...")
    // 首先对过大的图片进行压缩,以提高识别速度,将压缩的图片保存与临时文件夹中
    for picfile in glob.glob("picture/*"):
        convertimg(picfile, outdir)
    print("图片识别...")
    for picfile in glob.glob("tmp/*"):
        baiduOCR(picfile, outfile)
        os.remove(picfile)
    print('图片文本提取结束!文本输出结果位于 %s 文件中。' % outfile)
    os.removedirs(outdir)

到此这篇关于Python基于百度API识别并提取图片中文字的文章就介绍到这了,更多相关Python百度API识别图片文字内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
Python中的列表知识点汇总
Apr 14 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python适配器模式代码实现解析
Aug 02 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
Python如何使用turtle库绘制图形
Feb 26 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
pycharm代码删除恢复的方法
Python max函数中key的用法及原理解析
You might like
php利用单例模式实现日志处理类库
2014/02/10 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
显示、隐藏密码
2006/07/01 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
javascript 节点排序 2
2011/01/31 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS操作JSON要领详细总结
2013/08/25 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
学习python处理python编码问题
2011/03/13 Python
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python利用datetime模块计算时间差
2015/08/04 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Flask框架配置与调试操作示例
2018/07/23 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python两个list[]相加的实现方法
2020/09/23 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
总经理助理职责
2014/02/04 职场文书
小学毕业感言300字
2014/02/19 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
小王子读书笔记
2015/06/29 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL