返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

【开源】基于训练好的 Deep Learning 模型开发的,模型包含功能:文本检测、文本识别,目前斩获21.9K star

[复制链接]
链载Ai 显示全部楼层 发表于 2025-12-2 09:44:41 |阅读模式 打印 上一主题 下一主题

文本检测

文本检测是计算机视觉领域的一项技术,它旨在从图像或视频中检测并定位文本内容。这项技术对于许多应用都至关重要,例如:

1. 光学字符识别(OCR):将图像中的文字转换为机器可读的文本格式,以便进一步处理和分析。

2. 内容审核:自动识别并过滤不当或敏感的文字内容。

3. 场景理解:帮助机器更好地理解图像中的场景,例如通过识别路牌、广告牌等文字信息。

4. 辅助功能:如为视障人士提供实时文字阅读服务等。

文本检测技术通常包括以下几个步骤:

- 文本定位:在图像中确定文本的位置。

- 文本识别:将定位到的文本区域进行字符分割和识别。

- 后处理:对识别结果进行校正和优化,以提高准确率。

随着深度学习技术的发展,尤其是卷积神经网络(CNN)和循环神经网络(RNN)的应用,文本检测的准确率和效率都有了显著提升。这项技术在遵循中国法律法规和社会主义核心价值观的前提下,广泛应用于各种场景,以促进社会主义现代化建设。

文本识别的深度学习框架

以下是一些广泛使用的深度学习框架,它们支持文本检测和识别任务:

1. TensorFlow:由Google开发的开源深度学习框架,广泛用于各种机器学习任务,包括文本检测。它提供了丰富的API和预训练模型,如SSD(Single Shot Multibox Detector)和CRNN(Convolutional Recurrent Neural Network)。

2. PyTorch:由Facebook开发的开源深度学习框架,以其动态计算图和易用性而受到许多研究者和开发者的喜爱。PyTorch同样支持多种文本检测模型,如RetinaNet和 EAST(Efficient and Accurate Scene Text Detection)。

3. Keras:一个高层次的神经网络API,它能够以TensorFlow、CNTK或Theano作为后端运行。Keras以其简洁的API设计而闻名,非常适合快速原型设计和开发。

4. Caffe:由Berkeley Vision and Learning Center(BVLC)开发的一个深度学习框架,特别适合于图像处理任务。虽然它的开发已经不如TensorFlow和PyTorch活跃,但它仍然是一个强大的工具,尤其是在处理文本检测的卷积神经网络方面。

5. MXNet:由Apache Software Foundation支持的开源深度学习框架,支持灵活的编程模型和高效的性能。它也被亚马逊AWS作为默认的深度学习框架之一。

6. PaddlePaddle:由百度开发的开源深度学习平台,它提供了丰富的文本检测和识别模型,如PaddleOCR,这是一个用于OCR任务的端到端开源工具库。

在选择框架时,您应该考虑您的具体需求、模型的复杂性、社区支持、文档完备性和易于集成等因素。大多数框架都提供了预训练的模型和教程,可以帮助您快速开始文本检测项目。

特点

它是一个开源的OCR(Optical Character Recognition,光学字符识别)库,它基于深度学习技术,能够识别多种语言和字体。它的特点包括:

1. 多语言支持:它支持多种语言的文本识别,包括但不限于英文、中文、日文、韩文等,这使得它在处理多语言文档时非常有用。

2. 端到端系统:它提供了一个端到端的解决方案,它不仅能够检测图像中的文本区域,还能够对检测到的文本进行识别。

3. 用户友好:它的API设计简单易用,用户可以通过简单的几行代码实现文本的检测和识别。

4. 自定义模型:虽然它提供了预训练模型,但它也允许用户使用自己的数据集对模型进行训练,以适应特定的应用场景。

5. 跨平台:它可以在多个操作系统上运行,包括Windows、Linux和macOS。

6. 开源和免费:它是开源的,遵循GPLv3许可证,可以免费使用,包括商业用途。

7. 基于深度学习:它使用了深度学习技术,特别是卷积神经网络(CNN)和循环神经网络(RNN),这些技术使得它在处理复杂场景文本时具有较高的准确率。

8. 速度快:它在保持较高准确率的同时,也注重性能优化,能够快速处理图像和视频中的文本。

9. 社区支持:作为一个开源项目,它有一个活跃的社区,用户可以通过社区获得支持,也可以为项目贡献代码和改进。

10. 持续更新:它的开发者持续更新项目,修复bug,添加新功能和改进性能。

由于它的易用性和多功能性,它被广泛应用于各种场景,如文档分析、图像内容审核、自动化文本提取等。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);visibility: visible;">使用

它的使用正如其名非常地简单,就是2个步骤,第1步创建Reader()实例,第2步用readtxt()方法检测和识别。

创建Reader()实例

初始化Reader()实例的参数有:

  • lang_list (list):识别语言代码,比如[‘ch_sim’,’en’]分别表示简体中文和英文。

  • gpu (bool, string, default = True) :是否使能GPU,只有安装了GPU版本才有效。

  • model_storage_directory (string, default = None) :模型存储位置,依次查找系统变量EASYOCR_MODULE_PATH (preferred)、MODULE_PATH (if defined)表示的路径或者~/.EasyOCR/路径。

  • download_enabled (bool, default = True):如果没有对应模型文件时,自动下载模型。

  • user_network_directory (bool, default = None) :用户自定义识别网络的路径,如果没有指明,则在MODULE_PATH + ‘/user_network’ (~/.EasyOCR/user_network)目录中查找。

  • recog_network (string, default = ‘standard’) :替代标准模型,使用自定义的识别网络。

  • detector (bool, default = True) :是否加载检测模型。

  • recognizer (bool, default = True) :是否加载识别模型。

创建完实例后,识别文字就要用到其readtext()方法。

检测与识别readtext()方法

下面是一个最简单的应用例子,首先创建一个reader对象,传入要使用的语言包(识别模型),然后在reader对象的readtext方法中传入要识别的文件名称:

ingFang SC", "Microsoft YaHei", SimHei, Arial, SimSun;font-size: 18px;color: rgb(79, 79, 79);line-height: 26px;font-synthesis-style: auto;letter-spacing: normal;text-align: start;white-space: normal;background-color: rgb(255, 255, 255);">检测与识别readtext()方法

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun;letter-spacing: normal;text-align: start;white-space: normal;background-color: rgb(255, 255, 255);line-height: 24px !important;">下面是一个最简单的应用例子,首先创建一个reader对象,传入要使用的语言包(识别模型),然后在reader对象的readtext方法中传入要识别的文件名称:

#juzicode.com/vx:桔子codeimporteasyocrreader=easyocr.Reader(['ch_sim','en'])result=reader.readtext('road-poetry.png')forresinresult:print(res)

运行结果:

([[151,101],[195,101],[195,149],[151,149]],'西',0.9816301184856115)([[569,71],[635,71],[635,131],[569,131]],'东',0.9986620851098884)([[218,92],[535,92],[535,191],[218,191]],'诗和远方路',0.8088406614287519)([[137,217],[177,217],[177,257],[137,257]],'W',0.8304899668428476)([[209,217],[525,217],[525,257],[209,257]],'oetryAndThePlacesAfarRd。',0.40033782611925706)([[571,207],[611,207],[611,251],[571,251]],'C',0.1553293824532922)

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun;letter-spacing: normal;text-align: start;white-space: normal;background-color: rgb(255, 255, 255);line-height: 24px !important;">readtext()方法返回一个元组,包含了多个元素,每个元素由识别到文字信息的边框,文字内容,可信度等3部分组成。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun;letter-spacing: normal;text-align: start;white-space: normal;background-color: rgb(255, 255, 255);line-height: 24px !important;">除了前面例子中readtext()传入文件名称,也可以在readtext()方法中传入图像的numpy数组,比如用opencv读取图片文件得到的numpy数组:

#juzicode.com/vx:桔子codeimporteasyocrimportcv2reader=easyocr.Reader(['ch_sim','en'])img=cv2.imread('road-poetry.png')result=reader.readtext(img)color=(0,0,255)thick=3forresinresult:print(res)pos=res[0]text=res[1]forpin[(0,1),(1,2),(2,3),(3,0)]:cv2.line(img,pos[p[0]],pos[p[1]],color,thick)cv2.imwrite('bx-road-poetry.jpg',img)

运行结果:

([[151,101],[195,101],[195,149],[151,149]],'西',0.9805448761688105)([[569,71],[635,71],[635,131],[569,131]],'东',0.9985224701960114)([[217,91],[534,91],[534,194],[217,194]],'诗和远方路',0.8750403596327564)([[137,217],[177,217],[177,257],[137,257]],'W',0.7520859053705777)([[209,217],[523,217],[523,257],[209,257]],'oetryAndThePlacesAfarRd。',0.3012721541954036)([[571,207],[611,207],[611,251],[571,251]],'C',0.15253169048338933)

第3种方法是在readtext()中传入读出的原始字节内容,注意图片文件是以rb方式读出:

#juzicode.com/vx:桔子codeimporteasyocrreader=easyocr.Reader(['ch_sim','en'])withopen('road-poetry.png','rb')aspf:img=pf.read()result=reader.readtext(img)forresinresult:print(res)

运行结果:

([[151,101],[195,101],[195,149],[151,149]],'西',0.673960519698312)([[569,71],[635,71],[635,131],[569,131]],'东',0.9128537192685862)([[218,92],[535,92],[535,191],[218,191]],'诗和远方路',0.7941057755221305)([[137,217],[177,217],[177,257],[137,257]],'W',0.7182424534268108)([[209,217],[525,217],[525,257],[209,257]],'oetryAndThePlacesAfarRd。',0.5591090091224509)([[571,207],[611,207],[611,251],[571,251]],'C',0.1532075452826911)

可试用产品

开源地址

关注公众号回复20240501获得


作者简介:

张锋,微服务架构实战原创作者,拥有超过10年的软件开发和架构设计经验。他是一位热衷于探索新技术和模式的软件工程师,对微服务架构、容器技术、自动化部署等领域有深入研究。在职业生涯中,他曾任职于多家知名企业,担任过技术团队负责人,带领团队实现了一系列高并发、高可用的微服务架构项目。

张锋老师在微服务架构领域有着丰富的实践经验,他的作品《微服务架构实战》深入浅出地介绍了微服务架构的设计理念、技术栈选择、项目实践等关键环节,广受读者好评。此外,他还活跃在技术社区,分享自己的见解和心得,助力更多开发者掌握微服务架构的精髓。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ