深度学习落地实战:识别火车票信息

  前言

大家好,我是机长

本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用

正在跟新中~

项目背景

随着铁路交通的快速发展,火车票作为旅客出行的重要凭证,其信息识别的准确性和效率对提升铁路服务质量和旅客体验至关重要。传统的火车票信息识别方式往往依赖于人工操作,不仅耗时耗力,而且容易出现错误和疏漏。特别是在客流量大的高峰期,人工识别火车票信息更是难以满足实际需求。

因此,基于计算机视觉和深度学习技术的火车票信息识别项目应运而生。该项目旨在通过自动化、智能化的方式,实现对火车票信息的快速、准确识别,从而提高工作效率,降低人力成本,并进一步提升铁路服务的智能化水平。通过该项目的研究和应用,可以推动铁路交通行业的数字化转型和智能化升级,为旅客提供更加便捷、高效的出行服务。

项目运行环境

  • 平台:windows 10
  • 语言环境:python 3.8
  • 编辑器:PyCharm
  • PyThorch版本:1.8

1.创建并跳转到虚拟环境

python -m venv myenvmyenv\Scripts\activate.bat

2. 虚拟环境pip命令安装其他工具包

pip install torch torchvision torchaudio

注:此处只示范安装pytorch,其他工具包安装类似,可通过运行代码查看所确实包提示进行安装

3.pycharm 运行环境配置

进入pytcharm =》点击file =》点击settings=》点击Project:...=》点击 Python Interpreter,进入如下界面

点击add =》点击Existing environment  =》 点击 ... =》选择第一步1创建虚拟环境目录myenv\Scripts\下的python.exe文件点击ok完成环境配置

PaddleOCR

                

PaddleOCR近期更新概览

PaddleOCR,作为一套全面、先进且实用的OCR工具库,持续致力于提升OCR技术的易用性和模型性能,助力用户快速训练高效模型并实现应用落地。以下是近期几项重要更新的简要整理:

  1. FAQ扩展(2020.12.14):为更好地服务用户,PaddleOCR的FAQ部分新增了5个高频问题解答,总数达到129个。我们承诺每周一都会进行更新,确保用户能够及时获取到常见问题的解决方案,欢迎广大用户持续关注。

  2. 半自动标注工具PPOCRLabel更新(2020.11.25):为提高数据标注效率,PaddleOCR推出了PPOCRLabel工具,该工具能够辅助开发者高效完成OCR数据的标注任务。其输出格式与PP-OCR训练任务无缝对接,极大简化了标注到训练的流程。

  3. PP-OCR技术文章发布(2020.9.22):详细阐述了PP-OCR的技术原理与实现细节,论文已上传至arXiv(https://arxiv.org/abs/2009.09941),为学术界和工业界提供了宝贵的参考资料。

  4. 超轻量模型更新(2020.9.19 & 2020.9.17)

    • Mobile Slim系列模型:推出了整体模型大小仅为3.5M的超轻量版本,非常适合在移动端部署使用,满足了移动端设备对模型体积和性能的双重需求。
    • Mobile & Server系列模型:更新了中英文OCR模型,性能媲美商业软件,为用户提供了更多选择。
  5. 多语言支持增强(2020.9.17):除了中英文识别模型外,还新增了对德语、法语、日语、韩语的识别支持,且承诺将持续更新更多语种识别模型,以满足全球用户的需求。

  6. 安装方式优化(2020.8.24):支持通过whl包直接安装PaddleOCR,简化了安装流程,用户只需按照PaddleocrPackage使用说明操作即可快速上手使用。

  7. 学习资源更新(2020.8.21):发布了8月18日B站直播课的回放和PPT,特别是课节2“易学易用的OCR工具大礼包”,为初学者提供了丰富的学习资料和实战指导,获取地址请见相关公告。

PaddleOCR团队将持续关注用户需求,不断优化产品功能和性能,为用户提供更加便捷、高效的OCR解决方案。

数据以及安装包

获取方式:百度网盘

文字识别

# 使用ocr进行文字识别
def getText(img):res = ocr.ocr(img, det=True, cls=False)time = res[2][1][0] # 发车时间num = res[3][1][0] # 车厢座次seats = res[4][1][0] # 几等座trains = res[5][1][0] # 列车编号source = res[6][1][0] # 出发地target = res[7][1][0] # 目的地price = res[10][1][0] # 价格return time, num, seats, trains, source, target, price

加载ocr模型

# 加载ocr模型
ocr = PaddleOCR(rec_model_dir='./ocr/rec/ch/ch_PP-OCRv3_rec_infer',det_model_dir='./ocr/det/ch/ch_PP-OCRv3_det_infer', cls_model_dir='./ocr/cls/ch_ppocr_mobile_v2.0_cls_infer')

读取信息

# 读取图片
file_path = './test.png'
img = cv2.imread(file_path)# 获取识别结果
time, num, seats, trains, source, target, price = getText(img)print('发车时间', time)
print('车厢座次', num)
print('几等座', seats)
print('列车编号', trains)
print('出发地', source)
print('目的地', target)
print('价格', price)

完整可运行代码

import cv2
import re
from paddleocr import PaddleOCR# 使用ocr进行文字识别
def getText(img):res = ocr.ocr(img, det=True, cls=False)time = res[2][1][0] # 发车时间num = res[3][1][0] # 车厢座次seats = res[4][1][0] # 几等座trains = res[5][1][0] # 列车编号source = res[6][1][0] # 出发地target = res[7][1][0] # 目的地price = res[10][1][0] # 价格return time, num, seats, trains, source, target, price# 加载ocr模型
ocr = PaddleOCR(rec_model_dir='./ocr/rec/ch/ch_PP-OCRv3_rec_infer',det_model_dir='./ocr/det/ch/ch_PP-OCRv3_det_infer', cls_model_dir='./ocr/cls/ch_ppocr_mobile_v2.0_cls_infer')# 读取图片
file_path = './test.png'
img = cv2.imread(file_path)# 获取识别结果
time, num, seats, trains, source, target, price = getText(img)print('发车时间', time)
print('车厢座次', num)
print('几等座', seats)
print('列车编号', trains)
print('出发地', source)
print('目的地', target)
print('价格', price)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245746.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

本地多模态看图说话-llava

其中图片为bast64转码,方便json序列化。 其中模型llava为本地ollama运行的模型,如:ollama run llava 还有其它的模型如:llava-phi3,通过phi3微调过的版本。 实际测试下来,发现本地多模型的性能不佳&…

【数智化案例展】某省会城市——轨道交通线网云平台建设

‍ 逸迅科技案例 本项目案例由逸迅科技投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 本项目将打造一个先进的线网指挥中心大数据平台,它将作为这座城市轨道…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

如何制定高效的媒体公关解决方案

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体公关解决方案是指企业或组织为提升品牌形象、塑造公众认知、应对危机事件等目的,通过媒体渠道制定并实施的一系列公关策略和行动计划。这一解决方案旨在通过有效的媒体沟…

4. JavaSE ——【移位运算符】

📖 开场白 亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能&…

智慧煤矿:AI视频智能监管解决方案引领行业新变革

随着科技的飞速发展,人工智能(AI)技术已经渗透到各个行业,为传统产业的转型升级提供了强大的动力。在煤矿行业中,安全监管一直是一个重要的议题。为了提高煤矿的安全生产水平,降低事故发生率,智…

6 款 SD 卡数据恢复软件,助您恢复丢失的文件

如果您经常使用摄像机、相机或某种类型的手机,您会发现您的数据和文件存储在 SD 卡上。这使得它成为设备中非常重要的一部分。但是,SD 卡相对容易损坏,这可能会导致您的文件和数据意外丢失。 此时,您需要采取一些措施来帮助您恢复…

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 ,导入jar 包报错(当时是网速太慢了,一直卡着不动 就关了 idea 重新下载)结果报错 之前的redis 项目都可以的,网上找了一下 都没解决 2.解决办法 既然说不能传输, 就说…

Python数据爬取(续)

如有需要阅读可在资源下载,因文章设计内容,官方大大审核无法直接通过 已上传至GitCode上,如感兴趣可观看

机器学习 | 深入理解激活函数

什么是激活函数? 在人工神经网络中,节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后,将此输出用作下一个节点的输入,依此类推,直到找到原始问题的所需解决方案。 它将结果值映射到所需的范围…

【后端开发实习】用MongoDB和Redis实现消息队列搭建分布式邮件消息系统

用Redis实现消息队列并搭建分布式邮件消息系统 系统介绍Redis实现消息队列思路分析代码实现 MongoDB监听数据变化思路分析代码实现Mongoose测试连接监听mongodb数据变化 注意点 系统介绍 本次要实现的是一个能够实现实时监控Mongodb中数据变化的系统,要能够在数据发…

VGMShield:揭秘视频生成模型滥用的检测与追踪技术

人工智能咨询培训老师叶梓 转载标明出处 视频生成模型,如 Stable Video Diffusion 和 Videocrafter,已经能够生成合理且高分辨率的视频。但这些技术进步也带来了被恶意利用的风险,比如用于制造假新闻或进行政治宣传。因此,来自弗…

彩电上自带的推箱子游戏是什么编程语言开发的?

2000年左右的厦新彩电上,自带了推箱子、华容道游戏。界面如下: 在线版推箱子游戏,网址:https://www.tuixiangzi.cn/ BASIC,全称是Beginners All-purpose Symbolic Instruction Code,含义是初学者通用符号…

【杰理蓝牙开发】AC695x 按键扫描接口分析

【杰理蓝牙开发】AC695x 按键ADC接口分析 0. 个人简介 && 授权须知1. 按键扫描配置和按键消息处理1.1 参数说明1.2 按键事件说明2. 应用层处理3. 特殊按键需求3.1 特殊需求 1:组合键3.2 特殊需求 2:按键多击事件3.3 特殊需求 3:某些按键只响应单击事件0. 个人简介 &…

AI算法20-分位数回归算法Quantile Regression | QR

分位数回归算法的概念 分位数回归算法简介 分位数回归(Quantile Regression)是一种统计方法,最早由Roger Koenker和Gilbert Bassett于1978年提出。它通过估计条件分位数函数来分析自变量与因变量之间的关系,与传统的最小二乘回归…

怎么压缩视频文件?简单的压缩视频方法分享

视频已成为我们日常生活中不可或缺的一部分。但随着视频质量的提高,文件大小也逐渐成为我们分享的阻碍。如何有效压缩视频文件,使其既能保持清晰,又能轻松分享?今天,给大家分享五种实用的视频压缩方法,快来…

昇思25天学习打卡营第02天|张量 Tensor

一、什么是张量 Tensor 张量是一种特殊的数据结构,与数组和矩阵非常相似。张量(Tensor)是MindSpore网络运算中的基本数据结构。 张量可以被看作是一个多维数组,但它比普通的数组更加灵活和强大,因为它支持在GPU等加速…

项目JetCache的常见配置与使用

Hello, 大家好,今天本汪给大家带来的是JetCache在项目中的常见配置与用法讲解,接下来,随本汪一起来看看吧 一、介绍 官网地址:https://github.com/alibaba/jetcache JetCache 是一种 Java 缓存抽象,它为不同的缓存…

腾讯PAG动效工具解析

什么是PAG? 1、背景 在终端 APP 中,动画非常常见,它可以辅助视觉制造焦点,同时也可以让用户交互更加顺滑,但动画的实现却是设计师和研发群体的一个痛点。如何辅助设计师设计高性能炫酷的动画、如何将设计师设计的动画…

自托管端口管理系统Portall

老苏一直在折腾各种开源软件,但总是记不清哪些应用占用了哪些端口,每次都是先随机想一个端口,然后在笔记中搜索,看有没有被占用过。Portall 就是用来解决老苏遇到的这种情况的,当然,excel 也是可以的 &…