page contents

大批量文字识别?python实现起来真简单!

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

attachments-2025-04-UCYjU9um67ee2b748d5b6.jpg在当今数字化时代,图像文字识别(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 isNone:

        # 获取当前 py 文件所在的绝对地址

        cwd = os.getcwd()

        # 拼接 images 文件夹地址

        images_path = os.path.join(cwd, "images")

        # 如果没有 images 文件夹,就新建一个

        if"images"notin os.listdir(cwd):

            os.mkdir(images_path)

    # 拼接 ocr_result 文件夹地址

    ocr_result_path = os.path.join(images_path, "ocr_result")

    if"ocr_result"notin 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

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1884 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1884 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章