热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

极简主义OCR

用opencv的dnn模块做OCR,实现对图片中的文本检测与识别,其中文本检测用的是EAST,文本识别用的是CRNN。这套程序里有Pyth

用opencv的dnn模块做OCR,实现对图片中的文本检测与识别,其中文本检测用的是EAST,文本识别用的是CRNN。这套程序里有Python和C++两种版本的实现,以Python版本的程序为例,程序的运行不依赖任何深度学习框架pytorch,tensorflow等等的,只依赖opencv,numpy,math和argparse这4个python库,做到极简主义OCR。我把这套程序源码发布在github上了,地址是 https://github.com/hpc203/ocr-opencv-dnn

在运行程序前,按照README.md里的提供的模型文件地址下载模型文件后,就可以运行程序了。

在编写这个程序时,我一直有个疑惑,就是在EAST文本检测模块里。起初,我是在https://github.com/spmallick/learnopencv/blob/master/TextDetectionEAST/textDetection.py里看到用opencv的dnn模块做EAST文本检测,但是它的读取模型文件初始化网络的方式我一直疑惑不解。看text_detect_recognition.py的第152行:

detector = cv.dnn.readNet(modelDetector)

modelDetector是.pb文件,这说明它是在tensorflow框架里训练得到的,我把这行代码换成

detector = cv.dnn.readNetFromTensorflow(modelDetector)

程序依然可以正常运行,值得注意的是它这里只提供.pb文件作为输入就能正常运行。但是我看到过的用cv.dnn.readNetFromTensorflow读取faster-rcnn,mask-rcnn,又或者ssd的时候,需要提供.pb和.pbtxt文件才能正常运行的,如果只提供.pb文件,那程序运行就会报错中断的。看opencv里的dnn.py文件,readNetFromTensorflow函数接口的定义:

可以看到config(也就是pbtxt文件)是一个可选项,在调用这个函数时,可以不提供config输入参数的。readNet函数接口的定义也是如此

因此,我就有个疑问,在tensorflow框架里训练产生的模型文件,用opencv的dnn模块读取时,什么样的网络可以只提供.pb文件就能正常运行,什么样的网络需要既提供.pb又要提供.pbtxt文件才能正常运行呢?

此外,我做了一个OCR的应用,使用OCR算法做身份证全卡面文字解析,在这个算法里,包含Faster-rcnn检测图片里的证件照,DBNet检测证件照里的文字,CRNN识别文字,一共三个模块,我把程序发布在github上了,地址是 https://github.com/hpc203/OCR-dbnet-crnn


推荐阅读
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 在Win10上利用VS2015构建Caffe2环境
    本文详细介绍如何在Windows 10操作系统上通过Visual Studio 2015编译Caffe2深度学习框架的过程。包括必要的软件安装、环境配置以及常见问题的解决方法。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了 TensorFlow 的入门实践,特别是使用 MNIST 数据集进行数字识别的项目。文章首先解析了项目文件结构,并解释了各部分的作用,随后逐步讲解了如何通过 TensorFlow 实现基本的神经网络模型。 ... [详细]
  • Shiro功能拓展:登录失败重试次数限制
    本文详细介绍了如何在Apache Shiro框架中实现对用户登录失败重试次数的限制,通过自定义密码匹配器来增强系统的安全性。该方法不仅能够有效防止暴力破解攻击,还能确保合法用户的账户安全。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 本笔记为自用,倘若没有相关的学习基础,也确实无法看懂文章写的是什么。近来有点越学越回去的感觉。竟然突然在想,为什么深度学习模型可以对图像进行分类或者语义分割。可怕的是,当时想到这里 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
author-avatar
sprite_77
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有