Python实现OCR大批量识别图片文字,并将文字保存到txt文档中,文末源码直接拿!

news/2025/1/15 13:53:27/

文章目录

  • 项目背景
  • 项目介绍
  • 运行项目
  • 代码详解
  • 源码地址

项目背景

在当今数字化时代,图像文字识别(Optical Character Recognition, OCR)技术的应用越来越广泛。

OCR技术可以将印刷体文字转化为可编辑的文本格式,从而方便进行文本分析、数据挖掘等操作。Python作为一种简洁、易用的编程语言,提供了丰富的图像处理和机器学习库,使得实现图像文字识别变得简单而高效。

本文将介绍如何使用Python实现大批量识别图片文字,并将文字保存到txt文档中!

项目介绍

本项目使用的文字识别模型来自飞桨开源模型: chinese_ocr_db_crnn_server Module

该模型基于 chinese_text_detection_db_server 检测得到的文本框,继续识别文本框中的中文文字。之后对检测文本框进行角度分类。最终识别文字算法采用 CRNN(Convolutional Recurrent Neural Network) 即卷积递归神经网络。其是DCNN和RNN的组合,专门用于识别图像中的序列式对象。与CTC loss配合使用,进行文字识别,可以直接从文本词级或行级的标注中学习,不需要详细的字符级的标注。该Module是一个通用的OCR模型,支持直接预测。

项目主要功能:

  • 支持识别多种图片类型
support_type = ["bmp", "dib", "jpeg", "jpg", "jpe", "jp2", "png", "webp", "pbm", "pgm", "pxm", "pnm", "tiff", "tif"]
  • 支持自定义图片路径
  • 支持大批量的图片识别
  • 支持将每一张图片的文字写入对应的txt文件中

运行项目

第一步: 从文末的源码地址,下载项目并解压到本地电脑

第二步: 配置运行环境,使用pycharm导入项目,在【terminal】下运行下面命令:

pip install -r requirements.txt

如果下载第三方库比较慢,可以考虑换一下pip的下载源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

第三步: 运行前可以替换image_path为自定义的路径,默认图片保存位置为当前py文件下的image文件夹。

代码详解

1、导入需要的库,paddlehub用于搭建模型,cv2用于读取图片,os模块创建文件

import paddlehub as hub
import cv2
import warnings
import os

2、识别图片,传入图片地址,,并将识别出的文字保存到对应的txt文本中

def ocr_images(images):if images:for r in images:file_path = r.get("file_path")ocr_result_txt_path = r.get("result_txt_path")ocr = hub.Module(name="chinese_ocr_db_crnn_server", enable_mkldnn=True) ocr_result = ocr.recognize_text(images=[cv2.imread(file_path)])with open(ocr_result_txt_path, "w") as f:for i in ocr_result[0]["data"]:f.write(i["text"])print(ocr_result_txt_path, "写入完成!")

3、获取指定路径下的所有图片地址,或者同级文件夹images中的所有图片地址

def return_images_files(images_path=None):# 返回指定路径下的所有图片绝对地址,如果没有指定,当前路径下的images文件夹if images_path is None:# 获取当前 py 文件所在的绝对地址cwd = os.getcwd()# 拼接 images 文件夹地址images_path = os.path.join(cwd, "images")# 如果没有 images 文件夹,就新建一个if "images" not in os.listdir(cwd):os.mkdir(images_path)# 拼接 ocr_result 文件夹地址ocr_result_path = os.path.join(images_path, "ocr_result")if "ocr_result" not in os.listdir(images_path):os.mkdir(ocr_result_path)# 获取文件夹下所有文件files = [os.path.abspath(os.path.join(r, f)) for r, _, fs in os.walk(images_path) for f in fs]# 判断文件夹下是否有文件if files:result = []for f in files:f_type = f.split(".")[1]# 判断文件类型是否存在if f_type in support_type:# 返回图片地址和识别结果txt的文件名result_txt_name = f.split(images_path)[1].replace("\\", "").split(".")[0] + ".txt"result_txt_path = os.path.join(ocr_result_path, result_txt_name)result_dict = {"file_path": f,"result_txt_path": result_txt_path}result.append(result_dict)return result

以上是部分源码,,有需要的朋友可以在文末的源码地址免费获取!

源码地址

链接:https://pan.baidu.com/s/1TRcxqttjnGfg6xPwnHuCuA?pwd=akxs
提取码:akxs


http://www.ppmy.cn/news/764967.html

相关文章

计算机网络设置端口转发,网件NETGEAR几款路由器端口转发功能设置方法

WPN824, RP614v2,MR814v2,WGR614,WGT624 端口转发设置实例。(以 RP614v2 为例) 1. WPN824, RP614v2,MR814v2,WGR614,WGT624 如何设置端口转发? 先登陆到设备的配置截面 在‘高级选项(Advanced…

服务器怎么设置自动拨号,网件路由器怎么设置自动拨号

网件netgear一直致力于网络技术创新,专注于产品的可靠性和易用性提升,为全球商用企业用户和家庭个人用户提供使用简便的高质量网络解决方案,那么你知道网件路由器怎么设置自动拨号吗?下面是学习啦小编整理的一些关于网件路由器设置自动拨号的…

网件R6400内网穿透最简单的实现方式

我的树莓派和ubuntu server都是放在家里的,刚开始不太懂就购买了hua sheng bang,可惜只有2条映射,由于软件多需要的端口也多,我就又购买了2个,总共6条映射。后来看了B站的视频,知道软路由和购买域名&#x…

网件使用计算机mac地址吗,找回网件R7000消失的无线MAC过滤功能

本帖最后由 zyyjcj 于 2015-2-27 20:13 编辑 想必大家R7000到手后都发现没有无线MAC过滤功能,对于平时不加密或作为AP的人来说很不方便,其实这个功能只是被隐藏了而已。 游览器登陆:http://routerlogin.net/WLG_acl.htm 发现了么:…

网件使用计算机mac地址吗,网件原生固件设置无线MAC地址过滤详细步骤

摘 要 原标题:"网件R6300v2原生固件设置无线MAC地址过滤方法"相关路由器设置经验分享。 - 来源:路由器之家  路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建" 原标题:"网件R6300v2原…

网件路由器使用计算机mac,网件路由器怎么ip与mac绑定(2)

网件路由器设置mac地址过滤的方法 1.通过启动电脑的Internet Explorer或者Netscape Navigator等其他浏览器登陆WG302的管理界面: 登录时只需输入192.168.0.228即可,且AP会要求提供用户名和密码。用户名:admin/密码:password,都是小…

网件6250刷Tomato 系统

最近手欠,总是想把路由器的系统给刷了,礼拜在家里测试 路由器:Netgear R6250 升级前,最好把本机的环境设置为:192.168.1.2/255.255.255.0 在网络上上找了许长时间,也测试了多款系统,一点击&…

网件rax40可以刷梅林_深度爆料网件RAX40评价如何?怎么样呢?真实体验曝光

实际上这款【WIFI65G双频全千兆】美国网件(NETGEAR) RAX40 AX3000M双核CPU无线高速路由器还可以的 哟,外观设计很好看,做工非常细腻,有朋友想知道这个网件RAX40怎么样?质量如何?说真心的这个网件RAX40使用过一段时间后个人觉得蛮可以的哈,才购买没多久的,传输速度:千兆…