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实现的数据结构与算法之双端队列详解
Apr 22 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 Python
python删除服务器文件代码示例
Feb 09 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
Python socket聊天脚本代码实例
Jan 02 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
python让函数不返回结果的方法
Jun 22 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 Python
Python基于百度AI实现抓取表情包
Python道路车道线检测的实现
浅析Django接口版本控制
浅析Python实现DFA算法
解析目标检测之IoU
pycharm代码删除恢复的方法
Python max函数中key的用法及原理解析
You might like
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
投票管理程序
2006/10/09 PHP
一个简单的PHP投票程序源码
2007/03/11 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP7 标准库修改
2021/03/09 PHP
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Python代码注释规范代码实例解析
2020/08/14 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
公司年会抽奖活动主持词
2014/03/31 职场文书
辞职书格式样本
2015/02/26 职场文书
小学中队活动总结
2015/05/11 职场文书
纪委立案决定书
2015/06/24 职场文书
车辆挂靠协议书
2016/03/23 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server