1 import os,glob
2 def photo_compression(original_imgage,tmp_image_path):
3 '''图片备份、压缩;param original_imgage:原始图片路径;param tmp_imgage_path:临时图片路径,备份路径;return'''
4 from PIL import Image
5 img = Image.open(original_imgage)
6 width,height = img.size
7 while (width*height>4000000):#该数值压缩后的图片大约200多k
8 width = width//2
9 height = height//2
10 e_img = img.resize((width,height),Image.BILINEAR)
11 save_path = os.path.join(tmp_image_path,os.path.basename(original_imgage))
12 e_img.save(save_path)
13 return save_path
14
15 def ocr(original_image):
16 '''使用百度OCR进行文字识别,支持JPG、JPEG、PNG、BMP格式;param original_image:待识别图片;return'''
17 from aip import AipOcr
18 filename = os.path.basename(original_image)
19 #输入自己的百度ai账号ID密码:参考链接:https://m.toutiaocdn.com/i6704242394566492684/
20 APP_ID = '******'
21 API_KEY = '*******'
22 SECRECT_KEY = '*********'
23
24 client = AipOcr(APP_ID,API_KEY,SECRECT_KEY)
25
26 with open(original_image,'rb') as picfile_read:
27 img = picfile_read.read()
28 print('正在识别图片:{0}......'.format(filename))
29 try:
30 result = client.basicGeneral(img)#通用文字识别,50000次/天免费
31 except:
32 result = client.basicAccurate(img)#通用文字识别(高精度版),500次/天免费
33 return result
34
35 def run_ocr(original_image,tmp_image_path,result_file_path='identify_results.txt'):
36 '''主函数 批量执行图片文本识别,结果存储;original_image:原始图片;tmp_image_path:临时图片;result_file_path:识别文字存储文件;return'''
37
38 if os.path.exists(result_file_path):#判断是否存在历史识别结果,若存在则删除
39 os.remove(result_file_path)
40 if not os.path.exists(tmp_image_path):#判断临时图片路径是否存在,若不存在则创建
41 os.mkdir(tmp_image_path)
42 tmp_file_path = []#临时文件路径列表
43 for picfile in glob.glob(original_image):#glob.glob的参数是一个只含有方括号、问号、正斜线的正则表达式
44 tmp_file = photo_compression(picfile,tmp_image_path)
45 tmp_file_path.append(tmp_file)
46 for picfile in tmp_file_path:#遍历所有文件,进行OCR识别 结果存储
47 result = ocr(picfile)
48 lines = [text.get('words') + '\n' for text in result.get('words_result')]
49 # lines = [text.get('words').encode('utf-8')+'\n' for text in result.get('words_result')]
50
51 with open(result_file_path,'a+',encoding='utf-8') as fo:
52 fo.writelines("="*100+'\n')
53 fo.writelines("【识别图片】:{0} \n".format(os.path.basename(picfile)))
54 fo.writelines("【文本内容】: \n")
55 fo.writelines(lines)
56 os.remove(picfile)
57
58 if __name__ == '__main__':
59 tmp_image_path = os.getcwd()+'\\tmp'
60 original_image = os.getcwd() + '\\*.png'
61 run_ocr(original_image,tmp_image_path)

Python识别图片中的文字的更多相关文章

  1. 使用Python进行OCR -- 识别图片中的文字

    工具 Tesseract pytesseract tesserocr 朋友需要一个工具,将图片中的文字提取出来.我帮他在网上找了一些OCR的应用,都不好用.所以准备自己研究,写一个Web APP供他使 ...

  2. Python通过百度Ai识别图片中的文字

    版本:python3.7 工作中有需要识别图片中的汗字,查看了半天大神们的博客,但没找到完全可以用的源码,经过自己的实践,以下源码可以实现: 创建应用 首先你需要登录百度AI,选择文字识别,创建一个应 ...

  3. C# 扫描识别图片中的文字(.NET Framework)

    环境配置 本文以C#及VB.NET代码为例,介绍如何扫描并读取图片中的文字. 本次程序环境如下: Visual Studio版本要求不低于2017 图片扫描工具:Spire.OCR for .NET ...

  4. 在Mac上 python中使用tesseract OCR (Pytesser) 识别图片中的文字

    仓库地址:https://github.com/RobinDavid/Pytesser brew install tesseract sudo pip install opencv-python 安装 ...

  5. python tesseract 识别图片中的文字的乱码问题(ubuntu系统下)

    OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程. 首先,需要安装 tesseract-ocr(tesseract O ...

  6. python 识别图片中的汉字

    我们就识别上面的汉字. 安装软件tesseract和python库 https://www.cnblogs.com/sea-stream/p/10961580.html 然后新建一个文件夹test,把 ...

  7. python识别图片中的代码。

    在看并发编程网的时候,有些示例代码是以图片的形式出现的,要是此时自己想复制下来的话,只能对着图片敲了,很不爽,于是搜了一下识别图片的网站,有! 把图片上传上去解析,下来txt文本,打开一看,大部分能解 ...

  8. Windows下 训练Tesseract实现识别图片中的文字

    介绍 Tesseract是一个基于Apache2.0协议开源的跨平台ocr引擎,支持多种语言的识别,在Windows和Linux上都有良好的支持. 源代码在这: 源码地址 有一个编译打包好的Windo ...

  9. python实战===用python识别图片中的中文

    需要安装的模块 PIL pytesseract 需要下载的工具: http://download.csdn.net/download/bo_mask/10196285 因为之前百度云的链接总失效,所以 ...

随机推荐

  1. xx局点FusionCloud6.3 type1 计算配额失败问题

    现象: 排查过程: 1.登录云平台部署面,选择部署资源-服务器 2.找到MOC-ManageOne-Service01.MOC-ManageOne-Service02两台机器ip地址. 3.用ssh工 ...

  2. Python datetime获取当前年月日时分秒

    from datetime import datetime now_time = datetime.now() str_time = now_time.strftime("%Y-%m-%d ...

  3. VS2012 生成可以在XP下运行的exe文件

    1. 在已安装VS2012条件下,安装update,作者已经安装了update3; 2. 相关设置: 设置"平台工具集":在项目右击-属性-常规-在"平台工具集" ...

  4. 有序全排列c++实现(递归)

    1 #include <iostream> 2 #include <algorithm> 3 #include <iterator> 4 #include < ...

  5. 学习Apache(三)

    对某个目录开启验证登录 <Directory /var/www/html/admin > AllowOverride All Order allow,deny Allow from all ...

  6. solr集群搭建,zookeeper集群管理

    1. 第一步 把solrhome中的配置文件上传到zookeeper集群.使用zookeeper的客户端上传. 客户端命令位置:/root/solr-4.10.3/example/scripts/cl ...

  7. 5. Git初始化及仓库创建和操作

    4. Git初始化及仓库创建和操作 基本信息设置 1. 设置用户名 git config --global user.name 'itcastphpgit1' 2. 设置用户名邮箱 git confi ...

  8. pandas数据读取

    02. Pandas读取数据 本代码演示: pandas读取纯文本文件 读取csv文件 读取txt文件 pandas读取xlsx格式excel文件 pandas读取mysql数据表 1.读取纯文本文件 ...

  9. STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数

    最近笔者开始学习STM32的HAL库,由于以前一直用标准库进行开发,于是发现了HAL库几点好玩的地方,在此分享. 1.句柄在STM32的标准库中,假设我们要初始化一个外设(这里以USART为例)我们首 ...

  10. logback日志级别动态切换的终极方案(asm使用)

    背景 一切皆有因果,所有事情,都有事件驱动.本方案的日志级别切换是由这样的背景下产生的: 单个生产环境上,有几百近千个微服务 日志级别切换不重启服务,要求即时生效果 由业务开发人员去修改代码或增加相关 ...