700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python保存多张图片_Python自学:识别并保存多张图片中的文本 python 文字

python保存多张图片_Python自学:识别并保存多张图片中的文本 python 文字

时间:2024-06-09 16:22:31

相关推荐

python保存多张图片_Python自学:识别并保存多张图片中的文本 python 文字

1.依次导入目录下的图片

先借助函数os.listdir(“path”)导入路径“path”下的所有文件名,然后再分别打开。

// 导入当前目录下的文件名(不包含自身),返回值为元组

file = os.listdir("./")

根据文件名的后缀判断文件格式。

// 先将字符串变为小写,然后判断其是否以‘jpg’结尾

file.lower().endswith('jpg')

使用举例:

// 依次打开当前目录下的所有图片

import os

// 判断是否为图片格式

for file in os.listdir("./"):

if(file.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm',

'.pgm', '.ppm', '.tif', '.tiff'))):

print(file)

结果:

// 运行结果

01.jpg

handwriting.jpg

tj.jpg

图片1.png

2.读入并显示一张图片

(1)使用opencv

// 打开一张图片

import cv2

image = cv2.imread('01.jpg')

# 通过窗口名关联imshow时的图片,调整图片大小,0表示窗口大小可手动调整(防止图片显示不全)

cv2.namedWindow("窗口名", 0)

cv2.imshow("窗口名", image)

cv2.waitKey(0)

cv2.destroyAllWindows()

(2)使用PIL库打开图片

from PIL import Image

picture = Image.open("01.jpg")

// 在win的环境下picture.show的方式为win自带的图像显示应用

picture.show()

(3)使用matplotlib打开图片

import matplotlib.pyplot as plt # plt 用于显示图片

import matplotlib.image as mpimg # mpimg 用于读取图片

picture = mpimg.imread('图片1.png')

plt.imshow(picture)

plt.axis('off') # 不显示坐标轴

plt.show()

以绘图的方式打开图片,仅能打开‘png’格式图片。

3.借助百度云完成文字识别

百度云官方文档

一个例子

百度云文字识别返回值为一个字典,字典中的‘words_result’值中包含识别的内容,而该值为一个元组,元组中每个元素记录了识别的一项结果(内容、可信度等)。

4.将字符串写入txt文件

// 选择“w”形式打开一个文件

f = open("temp.txt", "w", encoding='utf-8')

// 写入一个字符串txt后换行

file.write(txt + '\n')

f.close()

5.完整代码

将“图片”文件夹中所有图片的字符(包括汉字、英文、一些特殊符号)提取出来,存放在“语录.txtx”中。

//利用百度api实现图片文本识别

import os

from aip import AipOcr

// 百度云申请到的端口信息

APP_ID = '******'

API_KEY = '******'

SECRECT_KEY = '******'

client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)

""" 如果有可选参数 """

options = {}

options["detect_direction"] = "false"

options["probability"] = "true"

f = open("语录.txt", "w", encoding='utf-8')

""" 读取图片(打开文件并判断是否为图片格式) """

for file_name in os.listdir("./图片"):

if(file_name.lower().endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg',

'.pbm','.pgm', '.ppm', '.tif', '.tiff'))):

image = open('./图片/' + file_name,'rb').read()

else:

continue

""" 带参数调用通用文字识别(高精度版) """

""" 参数options可缺省"""

result = client.basicAccurate(image, options)

print(result)

try:

for i in range(int(result['words_result_num'])):

txt = result['words_result'][i]['words']

print(txt)

if len(txt) > 2:

// 完成一次内容的写入并换行

f.write(txt +'\n')

except:

pass

f.close()

注:文件“语录.txt” 和 文件夹“图片”跟该代码在同一目录下。

6.小结

原计划通过图片处理提取出特定的区域(小黑板上的内容),仅对该区域进行识别,避免其他因素的干扰(如背景中、衣服上的字符),但是因为目标轮廓检测方面遇到困难,取消了该环节。因此百度云的文字识别会将图片中的所有字符都提取出来。

另外在使用百度云时发现以下问题:

图一识别结果:

日月往

不可复追

图2识别结果

日月既往

不可复追

猜测这个结果可能跟文字在图片中的比例有关。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。