Python实现avif图片转jpg格式并识别图片中的文字

news2024/11/17 13:49:07

文章目录

    • 一、图片识别文字
      • 1、导包
      • 2、代码实现
      • 3、运行效果
    • 二、avif格式图片转jpg格式
      • 1、导包
      • 2、代码实现
      • 3、运行效果
      • 4、注意事项
    • 三、Python实现avif图片转jpg格式并识别文字全部代码

在做数据分析的时候有些数据是从图片上去获取的,这就需要去识别图片上的文字。Python有很多库可以很方便的实现OCR识别图片中的文字。这里介绍用EasyOCR库进行图片文字识别。easyocr是一个比较流行的库,支持超过80种语言,识别率高,速度也比较快。

一、图片识别文字

1、导包

pip install easyocr

2、代码实现

import easyocr
# 用easyocr识别图片并提取文字
def easyocr_pic(pic_path):
    reader = easyocr.Reader(['ch_sim', 'en'])
    results = reader.readtext(pic_path)
    ocr_result_dict = {}
    result_list = []
    for result in results:
        result_list.append(result[1])
    ocr_result_dict['orc_reslut']=result_list
    return ocr_result_dict

if __name__ == '__main__':
    orc_result = easyocr_pic(r'waf.png')
    print(orc_result)

3、运行效果

图片OCR识别效果

可以看到图片中的中文“防火墙”和"Web应用防火墙"都正确识别出来了。

注意:文件名和文件路径都不能有中文,否则会报错。如:如果将waf.png改成web应用防火墙.png就会报如下的错误。
[WARN:0@11.296] global loadsave.cpp:248 cv::findDecoder imread_(‘web应用防火墙.png’): can’t open/read file: check file path/integrity

在进行图片识别的时候发现如果是avif格式的也会报错。如从京东商品详情页下载的图片都是avif格式的,进行识别的时候就会报错。
在OCR识别报错

但是这个图片用看图软件是可以正常显示的。
用看图软件打开图片

用画图软件另存为png或jpg格式后可以用easyocr正常识别出图片中的文字。
在这里插入图片描述

注意:直接将.avif的后缀名直接改成.jpg虽然可以用看图软件可以打开,但是用easyocr识别同样会报错,所以我们需要用程序来实现将avif格式的文件转成jpg或png文件格式。

二、avif格式图片转jpg格式

用python来实现将avif格式的文件转成jpg也很简单,但也有些注意事项。

1、导包

pip install pillow-avif-plugin Pillow

2、代码实现

import pillow_avif  #注意一定要引入pillow_avif否则会抛异常'cannot identify image file 'XXX''
from PIL import Image
import os


# 将avif文件转成jpg文件
def convert_avif_to_jpg(input_path, output_dir):
    try:
        # 打开AVIF图像
        image = Image.open(input_path)

        # 获取输入路径的文件名及其所在目录
        file_name = os.path.basename(input_path)
        # 构建输出路径
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)

        output_path = os.path.join(output_dir, f"{os.path.splitext(file_name)[0]}.jpg")
        # 保存为PNG格式
        image.save(output_path, "JPEG")
    except Exception as e:
        print(e)


if __name__ == '__main__':
    # 调用函数进行转换
    convert_avif_to_jpg(r'5e595ea90b71f7ae.jpg.avif', 'avif2jpg')

3、运行效果

在这里插入图片描述
可以看到正常将avif文件转成了jpg格式的文件。

4、注意事项

import pillow_avif #注意一定要引入pillow_avif否则会抛异常’cannot identify image file ‘XXX’’
虽然代码没有用到pillow_avif但是一定要显示的用import pillow_avif否则在运行的时候会抛异常’cannot identify image file ‘XXX’’

三、Python实现avif图片转jpg格式并识别文字全部代码

所有代码用easyocrUtil.py实现

import easyocr
import pillow_avif  #注意一定要引入pillow_avif否则会抛异常'cannot identify image file 'XXX''
from PIL import Image
import os


# 将avif文件转成jpg文件
def convert_avif_to_jpg(input_path, output_dir):
    try:
        # 打开AVIF图像
        image = Image.open(input_path)

        # 获取输入路径的文件名及其所在目录
        file_name = os.path.basename(input_path)
        # 构建输出路径
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)

        output_path = os.path.join(output_dir, f"{os.path.splitext(file_name)[0]}.jpg")
        # 保存为PNG格式
        image.save(output_path, "JPEG")
    except Exception as e:
        print(e)


# 用easyocr识别图片并提取文字
def easyocr_pic(pic_path):
    reader = easyocr.Reader(['ch_sim', 'en'])
    results = reader.readtext(pic_path)
    ocr_result_dict = {}
    result_list = []
    for result in results:
        result_list.append(result[1])
    ocr_result_dict['orc_reslut']=result_list
    return ocr_result_dict


if __name__ == '__main__':
    # 调用函数进行转换
    convert_avif_to_jpg(r'5e595ea90b71f7ae.jpg.avif', 'avif2jpg')

    # 调用函数识别图片并提取文字
    orc_result = easyocr_pic(r'avif2jpg\5e595ea90b71f7ae.jpg.jpg')
    print(orc_result)

博客地址:http://xiejava.ishareread.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1423397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Buffer缓冲区类设计实现

目录 类设计理念 类设计接口函数 类设计函数实现 测试 正常读取与写入 相同类型拷贝 扩容测试 按行读取 类设计理念 类设计接口函数 #include <vector> #include <cstdint>#define BUFFER_DEFAULT_SIZE 1024 // Buffer 默认起始大小 class Buffer { pr…

Redis -- String 字符串, 计数命令,字符串操作

"学如逆水行舟&#xff0c;不进则退。" 目录 Redis的String字符串 常见命令 set get mget mset setnx setex psetex 计数命令 incr incrby decr decrby incrbyfloat 字符串操作 append getrange setrange strlen 小结 string内部编码 Redis…

全方面解析msvcp110.dll文件的修复教程,六个修复msvcp110.dll文件丢失问题的详细方法

msvcp110.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2012 Redistributable Package&#xff08;微软视觉C 2012重新分配包&#xff09;的一部分。这个文件主要包含了C标准库中的一些函数&#xff0c;特别是与内存管理、异常处理、字符串处理和数学计算相关的…

部署YUM仓库服务

一、yum仓库 1. yum简介 yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红帽软件包管理器的缩写&#xff09;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势&#xff0c;所以…

动态gif制作方法是什么?一个网站在线制作

一般我们说的gif动图就是动态图片是一种图片格式。Gif动图就是由一帧一帧的静态画面合成一张有动态效果的图片。接下来。给大家讲一讲gif生成&#xff08;https://www.gif.cn/&#xff09;的方法吧&#xff01;很简单不需要下载软件&#xff0c;手机、pc均可操作&#xff0c;只…

Unity触发检测Trigger踩坑合集

正常状态 绿色方块&#xff1a;刚体碰撞盒检测触发碰撞脚本 蓝色方块&#xff1a;碰撞盒 检测脚本&#xff1a; 正常进出&#xff1a; 踩坑1 绿色方块&#xff1a;刚体碰撞盒检测触发碰撞脚本 蓝色方块&#xff1a;碰撞盒 保持绿色和蓝色方块的接触 对蓝色方块&#xff1a…

87.网游逆向分析与插件开发-物品使用-物品交换的逆向分析与C++封装

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;物品丢弃的逆向分析与C代码的封装-CSDN博客 码云地址&#xff08;ui显示角色数据 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;5222a6b1e5…

程序员的新风口,来了?

过去几年逐渐沉寂的程序员培训行业&#xff0c;现在重新热闹了起来。 作为一家IT培训机构的课程顾问&#xff0c;小娜发现&#xff0c;最近一段时间&#xff0c;咨询鸿蒙开发课程的人越来越多了&#xff0c;为了能够及时回复&#xff0c;我整理了一份话术&#xff0c;以便快速摸…

Qt Excel读写 - QXlsx的安装配置以及测试

Qt Excel读写 - QXlsx的安装配置以及测试 引言一、安装配置二、简单测试 引言 Qt无自带的库处理Excel 文件&#xff0c;但可通过QAxObject 借助COM接口进行Excel的读写1。亦可使用免费的开源第三方库&#xff1a;QXlsx&#xff0c;一个基于Qt库开发的用于读写Microsoft Excel文…

存储监控工具:监控存储区域网络(SAN)

从托管应用程序到提供大型多媒体服务&#xff0c;组织都依靠其 IT 基础架构来提供无与伦比的最终用户体验。为了提供这种卓越的体验&#xff0c;必须大大提高应用程序的可用性和性能。在许多其他挑战中&#xff0c;存储区域网络 &#xff08;SAN&#xff09; 正好用于应对这些挑…

Fiddler-02使用

文章目录 一、Fiddler的作用二、Fiddler抓取https请求三、Fiddler过滤请求1、案例一2、案例二3、过滤页面介绍4、总结 四、Fiddler删除数据五、Fiddler接口基础概述六、Fiddler请求响应报文详解1、请求2、响应 七、Fiddler定位前后端的问题八、Fiddler弱网测试方式一&#xff1…

(十六)串口UART

文章目录 UART简介传输数据帧和波特率定时器1作为串口1波特率发生器串口部分相关寄存器TMODAUXRPCONSCONSBUF 串口1工作模式1&#xff1a;8位UART&#xff0c;波特率可变总体工作原理如何简单接收一个字符和发送数据一步之遥的设置现象演示 UART简介 通用异步收发传输器(Unive…

程序员每天会阅读哪些技术网站来提升自己?

我有一个很特别的习惯……每周会固定一天去看一下接单网站上的高薪单子&#xff0c;不完全是为了接单&#xff0c;而是看现在稀缺的岗位是什么…… 其实很多程序员对外包接单都有误解&#xff0c;觉得外包接单平台上的项目都是一些边缘的、没人愿意干的项目&#xff0c;虽然这类…

好用的制造业项目管理工具推荐:提升生产效率与项目成功的关键利器

有什么好用的制造业项目管理工具&#xff1f;制造业作为传统行业&#xff0c;经常会采用项目制管理模式&#xff0c;项目管理对制造业的重要性不言而喻。2024年制造业企业面对国内依然激烈的竞争&#xff0c;想要进一步发展&#xff0c;不仅要对外谋取&#xff0c;也要对内优化…

【LLM多模态】Cogview3、DALL-E3、CogVLM、CogVideo模型

note 文章目录 noteVisualGLM-6B模型图生文&#xff1a;CogVLM-17B模型1. 模型架构2. 模型效果 文生图&#xff1a;CogView3模型DALL-E3模型CogVideo模型网易伏羲-丹青模型Reference VisualGLM-6B模型 VisualGLM 是一个依赖于具体语言模型的多模态模型&#xff0c;而CogVLM则是…

2024年【中级消防设施操作员(考前冲刺)】考试题及中级消防设施操作员(考前冲刺)考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 中级消防设施操作员&#xff08;考前冲刺&#xff09;考试题参考答案及中级消防设施操作员&#xff08;考前冲刺&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及中级消防设施操作员&#xff08;考前冲刺…

[PHP]严格类型

PHP: 类型声明 - Manual

如何有效获取 Go 变量类型?探索多种方法

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 小技巧第九篇&#xff0c;系列文章查看&#xff1a;Go 语言小技巧。 文章目录 Go 的类型系统类型获取使用 fmt.Printf类型选择类型选择反射 reflect.TypeOf 其他注意点错误处理性能考量 总结 在 Python 中&#xff0c;可以使…

SpringBoot项目logback日志配置

Session 认证和 Token 认证 过滤器和拦截器 SpringBoot统一返回和统一异常处理 SpringBoot项目logback日志配置 程序运行出现错误时&#xff0c;第一时间想到的是甩锅还是日志&#xff1f;通过查看日志定位出问题的位置&#xff0c;才能更好的甩锅&#xff0c;今天就来学习…

Mastercam 2024 下载安装教程,流程简单,小白也能轻松搞定,附安装包和工具

前言 Mastercam是一款高效专业的实用型CAD/CAM设计辅助工具&#xff0c;集二维绘图、三维实体造型、曲面设计、体素拼合、数控编程、刀具路径模拟及真实感模拟等多种功能于一身&#xff0c;能够帮助用户轻松设计各种复杂的曲线、曲面零件、刀具路径等。 准备工作 1、Win10及…