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

这篇具有很好参考价值的文章主要介绍了Python实现OCR大批量识别图片文字,并将文字保存到txt文档中,文末源码直接拿!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目背景

在当今数字化时代,图像文字识别(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文章来源地址https://www.toymoban.com/news/detail-557001.html

到了这里,关于Python实现OCR大批量识别图片文字,并将文字保存到txt文档中,文末源码直接拿!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 自动获取大批量excel数据并填写到网页表单(pandas;selenium)

    自动获取大批量excel数据并填写到网页表单 部分网页获取下拉列表点击的方式有所差异 这个请根据网页源码自做选择 一定要学会使用IPDB调试工具 太好用了!!!! 可能需要pip update一下 看提示 很好解决 没有报错最好啦 Python真是太好用了 办公利器啊!!!!

    2024年02月12日
    浏览(22)
  • ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

    大致流程:将nginx 服务器(web-filebeat)的日志通过filebeat收集之后,存储到缓存服务器kafka,之后logstash到kafka服务器上取出相应日志,经过处理后写入到elasticsearch服务器并在kibana上展示。 一、集群环境准备 二、搭建zookeeper集群 前提条件:三台机器分别修改时区、关闭防火墙

    2024年02月04日
    浏览(16)
  • 100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

    🔥🔥 本文已收录于 《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html 优点 : 订阅限时9.9付费专

    2024年01月22日
    浏览(19)
  • elasticsearch删除大批量数据方法

    一般回用如下: 示例: 如果删除任务完成了,返回如下: 数据查询任务:

    2024年02月12日
    浏览(42)
  • 多线程处理大批量数据操作

     @Autowired private DataSourceTransactionManager dataSourceTransactionManager; @Autowired private TransactionDefinition transactionDefinition; @Autowired private StudentService studentService; /**  * 对用户而言,27s 任是一个较长的时间,我们尝试用多线程的方式来经行修改操作看能否加快处理速度  * 预计创建10个线程

    2024年02月09日
    浏览(17)
  • python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

    接到一个项目需求,其中需要调用到供应商的Http  API,因为有大量的测试资源,所以代码中会循环调用API。 然而在测试代码执行过程中,过程中偶尔报错:  此时看到报错,怀疑是可能是同时并发的问题, 但实际上并未对该接口进行限制,所以应该不是这个的问题, 进一

    2023年04月10日
    浏览(12)
  • MySQL---使用索引优化、大批量插入数据优化

    1. 使用索引优化 索引是数据库优化最常用也是最重要的手段之一 , 通过索引通常可以帮助用户解决大多数的 MySQL 的性能优化问题: 1.1 避免索引失效应用-全值匹配 该情况下,索引生效,执行效率高。 1.2 避免索引失效应用-最左前缀法则 1.3 避免索引失效应用-其他匹配原则

    2024年02月07日
    浏览(25)
  • Jmeter(三十一):制造大批量的用户数据数据

    需求:因测试需要,要造100w用户数据,通过用户名、手机号、密码可新增用户,其中用户名和电话号码要求100w用户不能重复 要点: 1、通过Bean shell Sampler实现用户名和手机号的足够随机。 符合我们常用规则的手机号:第一位为1,第二位为3-9,后面的9位为0-9即可。 phone=${_

    2024年02月10日
    浏览(16)
  • 远程运维大批量IT设备?向日葵批量部署、分组授权与安全功能解析

    数字化转型的不断推进,给予了企业全方位的赋能,但任何发展都伴随着成本与代价,比如在数字化转型过程中企业内部办公与外部业务所需的不断增加的IT设备数量,就为日常的运维工作提出了更大的挑战。 针对企业面对海量IT设备时的运维难、效率低、容易出错等问题,

    2024年02月14日
    浏览(15)
  • 使用postman做接口测试传入大批量动态参数的方法

    postman是一个非常好用的接口测试工具,而且功能也很强大,今天只简单说一下使用postman如何对一个接口传入大批量参数进行测试的方法。 以我测试的平台为例,我们的平台是做在线教育平台的,我模拟的场景是老师有一门课叫ABC,现在需要有1000个学生加入ABC这门课。我们不

    2024年01月23日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包