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

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
简介: 在做数据分析的时候有些数据是从图片上去获取的,这就需要去识别图片上的文字。Python有很多库可以很方便的实现OCR识别图片中的文字。这里介绍用EasyOCR库进行图片文字识别。easyocr是一个比较流行的库,支持超过80种语言,识别率高,速度也比较快。

在做数据分析的时候有些数据是从图片上去获取的,这就需要去识别图片上的文字。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/

目录
相关文章
|
11天前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
|
13天前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
211 0
|
6月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
164 4
|
4月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
345 68
|
2月前
|
数据采集 存储 监控
Python爬虫实战:批量下载亚马逊商品图片
Python爬虫实战:批量下载亚马逊商品图片
|
4月前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
1315 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
9月前
|
Python
Python格式
Python格式
86 5
|
10月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
343 1
|
11月前
|
PyTorch 算法框架/工具 数据格式
Python实用记录(八):不同格式之间的转换
本文介绍了Python中不同数据格式之间的转换方法,包括numpy数组与列表、字符串之间的转换,以及PyTorch张量与numpy数组之间的转换。
71 0
|
Python
python实现IP进制格式转换
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396536 ...
1085 0

推荐镜像

更多