[Python] 纯文本查看 复制代码
import pytesseract
from PIL import Image
import ddddocr
def demo(img_path: str):
"""
OCR库识别图片
:param img_path:
:return:
"""
image = Image.open(img_path)
# 使用pytesseract调用image_to_string方法进行识别,传入要识别的图片,lang='chi_sim'是设置为中文识别,
text = pytesseract.image_to_string(image, lang='chi_sim')
name = ''
for i in text.split(' '):
if '\n\x0c' in i:
i.replace('\n\x0c', '')
name += i
continue
name += i
return name
def xxx(tt: list, new_path: str):
"""
需要去修改新图片大小,和小图片大小 (未完善)
将图片copy 到另一个图片里面,按照坐标来copy:
tt = [[0, 0, '0'], [1, 0, '1'], [2, 0, '2']]
tt = [[0, 0, 'result_0'], [1, 0, 'result_1'], [2, 0, 'result_2']]
img_path = 'text_2.png'
:param tt:
:parame new_path: 新图片名字
:return:
"""
# 把所有小图片加载进列表
images = []
x = 0
y = 0
for i in tt:
x = i[0]
y = i[1]
x_x = x * 64
x_y = y * 65
# img_name = './img/' + i[-1] + '.png'
# img_name = i[-1] + '.png'
img_name = i[-1]
img = Image.open(img_name)
images.append([x_x, x_y, img])
print(tt)
# 创建一个空的大图像
large_image_width = 192
large_image_height = 65
large_image = Image.new('RGBA', (large_image_width, large_image_height), (255, 255, 255, 255))
# large_image = Image.open('image.png')
# 定义小图像素大小和数量
small_image_width = 64
small_image_height = 65
# 定义每张小图的坐标,并粘贴到大图上
for coordinates in images:
x1, y1 = coordinates[0], coordinates[1]
img = coordinates[2]
x2, y2 = x1 + small_image_width, y1 + small_image_height
large_image.paste(img, (x1, y1, x2, y2))
# 把生成的大图保存到磁盘
large_image.save(new_path)
print('将图片copy到一个图片中,完成')
def xxx_list(img_path: list, new_path: list):
"""
这里是把透明图片改为不透明 以列表方式传进来 批量处理
需要传入列表,保存的名字,也是列表
:param img_path: 需要修改透明背景的图片 -- 列表方式
:param new_path: 保存修改之后的图片 -- 列表方式
:return:
"""
""" 这里只是处理完成,并没有返回图片名字"""
# 打开RGBA图像
# for img_name, new_name in zip(img_path, new_path):
# image = Image.open(img_name)
# # 创建一个新的PNG图像,背景为白色,大小与原始图像相同
# background = Image.new('RGB', image.size, (255, 255, 255))
# # 合并两个图像,将不透明度应用于原始图像
# background.paste(image, mask=image.split()[3])
# background.save(new_name)
# print(f'{img_name} 图片处理之后为: {new_name}')
"""这里是处理完成之后返回图片名字"""
new_img_name = []
for i in range(len(img_path)):
image = Image.open(img_path[i])
# 创建一个新的PNG图像,背景为白色,大小与原始图像相同
background = Image.new('RGB', image.size, (255, 255, 255))
# 合并两个图像,将不透明度应用于原始图像
background.paste(image, mask=image.split()[3])
background.save(new_path[i])
new_img_name.append([i, 0, new_path[i]])
print(f'{img_path[i]} 图片处理之后为: {new_path[i]}')
return new_img_name
def xxx_(img_path: str, new_path: str):
"""
这里是把透明图片改为不透明 以列表方式传进来 单个处理
需要传入列表,保存的名字,也是列表
:param img_path: 需要修改透明背景的图片
:param new_path: 保存修改之后的图片
:return:
"""
image = Image.open(img_path)
# 创建一个新的PNG图像,背景为白色,大小与原始图像相同
background = Image.new('RGB', image.size, (255, 255, 255))
# 合并两个图像,将不透明度应用于原始图像
background.paste(image, mask=image.split()[3])
background.save(new_path)
print(f'处理完成 - 处理的图片{img_path} - 新图片{new_path}')
def dddd_ocr(img_path: str):
"""
用于识别图片文字
:param img_path:
:return:
"""
ocr = ddddocr.DdddOcr()
inage_content = Image.open(img_path)
dc_zb = ocr.classification(inage_content)
return dc_zb
if __name__ == '__main__':
# 加载字体
font_path = "C:\\Users\\user\\Desktop\\新建文件夹\\Noto_Sans_SC\\NotoSansSC-Thin.otf"
# orc库识别汉字
# text = demo(img_path='img_1.png')
# print(text)
"""将小图片通过坐标方式copy 到大图片里面"""
# tt = [[0, 0, '0'], [1, 0, '1'], [2, 0, '2']]
tt = [[0, 0, 'result_0'], [1, 0, 'result_1'], [2, 0, 'result_2']]
xxx(tt=tt, new_path='text_2.png')
xxx_(img_path='1.png', new_path='1_1.png')
""" 通过图片识别重命名图片"""
# name = 'shunxu_img/1685079490先选顺序.png'
# dc_zb = dddd_ocr('shunxu_img/1685079490先选顺序.png')
# im = Image.open(name)
# im.save(f'shunxu_img/{dc_zb}.png')