基于paddleocr的批量图片缩放识别

说明 

        在进行ocr文字识别的时候,有时候我们需要使用批量测试的功能,但是有些图片会识别失败或者个别根本识别不出来,这时候我们可以通过对原图片进行缩放,提高图像的分辨率,然后再次识别,这样可以大大提高图片文字识别的精度。

示例代码

# -*- coding='utf-8' -*-
'''
功能:将要识别的目录中的图片进行缩放后,再次使用ocr模型批量识别,并统计识别不成功的数目
'''
import os
from paddleocr import PaddleOCR, draw_ocr
from PIL import Image
import cv2def enlarge_images(input_folder, output_folder, scale_factor=2.0):# 检查输出文件夹是否存在,如果不存在则创建if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历输入文件夹中的所有文件for filename in os.listdir(input_folder):# 构建完整的文件路径file_path = os.path.join(input_folder, filename)# 检查文件是否为图像文件(例如,jpg, png 格式)if file_path.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff', '.gif')):# 读取图像image = cv2.imread(file_path)if image is None:print(f"无法读取图像文件: {file_path}")continue# 获取图像的原始尺寸height, width = image.shape[:2]#image = image[int(0.4*height):int(0.8*height),int(0.15*width):int(0.85*width)]# 计算放大后的尺寸new_width = int(width * scale_factor)new_height = int(height * scale_factor)dsize = (new_width, new_height)# 放大图像resized_image = cv2.resize(image, dsize, interpolation=cv2.INTER_LINEAR)# 构建输出文件路径output_file_path = os.path.join(output_folder, filename)# 保存放大的图像cv2.imwrite(output_file_path, resized_image)print(f"已保存放大的图像: {output_file_path}")# 使用实例
input_folder = './images' # 输入文件夹路径
output_folder ='./imagesAfter'  # 输出文件夹路径
# 对图片进行缩放,可以设置缩放倍数,默认缩放倍数为2
enlarge_images(input_folder, output_folder, scale_factor=3.0)# 初始化 PaddleOCR,使用英文和中文模型
ocr = PaddleOCR(use_angle_cls=True, lang='en') # 定义图片文件夹要识别的图片路径
image_folder = output_folder# 获取文件夹中所有图片文件名
image_files = [f for f in os.listdir(image_folder) if os.path.isfile(os.path.join(image_folder, f))]
count = 0
# 遍历每张图片进行识别
for image_file in image_files:try:image_path = os.path.join(image_folder, image_file)print(image_path)# 进行OCR识别result = ocr.ocr(image_path, cls=True)print('识别结果为:',result )if result[0]==None:count = count+1# 打印识别结果for line in result:print(f"File: {image_file}")for res in line:print(res)# 可视化识别结果# 显示原图image = Image.open(image_path).convert('RGB')boxes = [elements[0] for elements in result[0]] txts = [elements[1][0] for elements in result[0]]scores = [elements[1][1] for elements in result[0]]'''# 显示结果im_show = draw_ocr(image, boxes, txts, scores, font_path='./simfang.ttf')im_show = Image.fromarray(im_show)im_show.show()'''print(txts)except:pass
print('count的个数:',count)

结果:

 

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

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

相关文章

轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数

示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]示例 2: 输入:nums [-1,-100,3,99], k 2 输出:[3,99,-1,-100] 解释: 向右…

网络安全学习(四)Burpsuite

经过测试,发现BP需要指定的JAVA才能安装。 需要的软件已经放在我的阿里云盘。 (一)需要下载Java SE 17.0.12(LTS) Java Downloads | Oracle 1.2023版Burp Suite 完美的运行脚本的环境是Java17 2.Java8不支持 看一下是否安装成功&#xff0c…

智慧火灾应急救援:无人机、直升机航拍视角下的火灾应急救援检测数据集代码

智慧火灾应急救援:无人机、直升机航拍视角下的火灾应急救援检测数据集 引言 随着科技的发展,无人机、直升机等飞行器在火灾应急救援中的应用越来越广泛。这些飞行器不仅能快速到达火场,而且可以通过搭载的高清摄像机和其他传感器获取火场的…

编辑器拓展(入门与实践)

学习目标:入门编辑器并实现几个简单的工具 菜单编辑器 MenuItem [MenuItem("编辑器拓展/MenuItem")]static void MenuItem(){Debug.Log("这是编辑器拓展");} } 案例 1:在场景中的 GameObject 设置 1. 设置面板2. 直接创建 GameObject 结构…

jvisualvm工具使用-jvm本地调优(一)

前言: 公司的项目上线后,吞吐量越来越小了,也没有特殊异常抛出,测试环境、预生产又一切正常,反复看了日志,不纠结了,直接把可能影响的因素复制到本地开始jvm调试,随便记录贴个安装教…

linux概述与安装虚拟机

linux 1.Linux 概述 Linux 是一个极具影响力和广泛应用的操作系统。 它起源于芬兰人林纳斯・托瓦兹在大学期间编写的开源内核。Linux 作为一个整体,是免费供用户使用的,具备多用户、多任务、支持多线程的强大特性。 Linux 内核是其核心部分&#xff…

鸿蒙 ArkUI组件二

ArkUI组件(续) 文本组件 在HarmonyOS中,Text/Span组件是文本控件中的一个关键部分。Text控件可以用来显示文本内容,而Span只能作为Text组件的子组件显示文本内容。 Text/Span组件的用法非常简单和直观。我们可以通过Text组件来显…

上海餐饮数据分析与可视化

数据下载入口:PandasPyecharts | 上海市餐饮数据分析可视化 - Heywhale.com 数据介绍 类别:餐饮类别的名称(如烧烤、美食、粤菜等)行政区:餐厅所在行政区的名称(如浦东新区、闵行区等)点评数&a…

【Spring框架精讲】进阶指南:企业级Java应用的核心框架(Spring5)

文章目录 【Spring框架精讲】进阶指南:企业级Java应用的核心框架(Spring5)1.Spring框架快速入门1.1七大核心模块1.1.1 Spring Core1.1.2 Spring-Beans1.1.3 Spring Context1.1.4 Spring-Expression1.1.5 Spring AOP1.1.6 JDBC和DAO模块(Spring DAO&#…

C语言 | Leetcode C语言题解之第412题Fizz Buzz

题目&#xff1a; 题解&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/ char ** fizzBuzz(int n, int* returnSize) {/*定义字符串数组*/char **answer (char**)malloc(sizeof(char*)*n);for(int i 1;i<n;i){/*分配单个字符串…

visual prompt tuning和visual instruction tuning

visual prompt tuning&#xff1a;作为一种微调手段&#xff0c;其目的是节省参数量&#xff0c;训练时需要优化的参数量小。 输入&#xff1a;视觉信息image token可学习的prompt token 处理任务&#xff1a;比如常见的分类任务 visual prompt tuning visual instruction tu…

Microsoft 365 Copilot: Wave 2

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Python3将Excel数据转换为文本文件

文章目录 python3安装使用Python将Excel数据转换为文本文件&#xff1a;逐步指南openpyxl库简介前提条件脚本解析代码详细解析实际应用场景使用示例 结论 python3安装 centos安装python3 Python3基础知识 使用Python将Excel数据转换为文本文件&#xff1a;逐步指南 在数据处理…

闯关leetcode——27. Remove Element

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/remove-element/description/ 内容 Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The order of the elements may be changed. Then retur…

Docker 消息队列RabbitMQ 安装延迟消息插件

介绍 RabbitMQ的官方推出了一个插件&#xff0c;原生支持延迟消息功能。该插件的原理是设计了一种支持延迟消息功能的交换机。当消息投递到交换机后可以暂存一定时间&#xff0c;到期后再投递到队列。 查看版本号 docker exec rabbit名字 rabbitmqctl version根据版本下载 插…

Java | Leetcode Java题解之第412题Fizz Buzz

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> fizzBuzz(int n) {List<String> answer new ArrayList<String>();for (int i 1; i < n; i) {StringBuffer sb new StringBuffer();if (i % 3 0) {sb.append("Fizz"…

启动windows更新/停止windows更新,在配置更新中关闭自动更新的方法

在Windows操作系统中&#xff0c;启动或停止Windows更新&#xff0c;以及调整“配置更新”的关闭方法&#xff0c;涉及多种途径&#xff0c;这里将详细阐述几种常用的专业方法。 启动Windows更新 1.通过Windows服务管理器&#xff1a; -打开“运行”对话框&#xff08;…

《小迪安全》学习笔记04

这一块主要讲信息收集——渗透测试第一步&#xff01;&#xff01; 1.首先看有无网站&#xff1a; 存在CDN就用上次说的方法找到真实IP&#xff0c;然后转上↑ 收集四类信息&#xff1a;程序源码&#xff08;CMS&#xff09;等等 2.看有无APP&#xff0c;如涉及到WEB&#xf…

opencv学习:图像掩码处理和直方图分析及完整代码

图像掩码是一种二值图像&#xff0c;用于控制图像处理操作的应用区域。通过将掩码与原图像进行按位与操作&#xff0c;可以提取或屏蔽图像的特定部分。直方图是图像处理中的一个重要工具&#xff0c;用于分析图像的灰度分布。 实验步骤 使用OpenCV读取图像文件“phone.png”为…

JS基础之【对象详解 -- 对象的属性与方法、遍历对象与内置对象】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…