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

  前言

大家好,我是机长

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

正在跟新中~

项目背景

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

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

项目运行环境

  • 平台: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://www.rhkb.cn/news/378304.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式人工智能(9-基于树莓派4B的PWM-LED呼吸灯)

1、PWM简介 (1)、什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是在具有惯性的系统中利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制…

在 Linux 系统中安装MySQL 8.x(Ubuntu和CentOS)

文章目录 0. 前言1. 查看 Linux 的发行版本2. 在 Ubuntu 中安装MySQL 8.x2.1 更新包索引2.1.1 更改 Ubuntu 的镜像源2.1.2 更新软件包、升级软件包(耗时可能较长)2.1.3 可能遇到的问题 2.2 安装MySQL2.3 安全配置2.3.1 密码安全级别2.3.2 删除匿名用户2.…

华为HCIP Datacom H12-821 卷41

1.多选题 以下关于BGP Atomic_Aggregate和Aggregator的描述,正确的是哪些项? A、Aggregator属性属于可选过渡属性 B、Atomic_Aggregate属于公认任意属性 C、收到携带Atomic_Aggregate属性的路由表示这条路由不能再度明细化 D、 Agregator表示某条路由可能出现…

各类专业技术的pdf电子书

从业多年,收集了海量的pdf电子书籍,感兴趣的私聊。

设计模式学习(二)工厂模式——抽象工厂模式+注册表

设计模式学习(二)工厂模式——抽象工厂模式注册表 前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点:①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用…

【node-RED 4.0.2】连接 Oracle 数据库踩坑解决,使用模组:node-red-contrib-agur-connector

关于 Oracle Oracle 就好像一张吸满水的面巾纸,你稍一用力它就烂了。 PS:我更新了更好的模组的教程,这篇已经是旧款的教程,但是它仍旧包含了必要的配置环境变量等操作。 最新的模组教程:node-red-contrib-agur-connec…

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…

基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。 目录 仿真效果图 仿真图 代码 系统论文 资源下载 设计的内容和要求 熟悉51系…

基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 在三维图中,幅度越大,则表示人员更习惯的行走路线。 2.算法运行软件版本 matlab2022a 3.部分核…

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器(根据名称、id、类选择元素) //页面上的所有 …

【经验分享】关于静态分析工具排查 Bug 的方法

文章目录 编译器的静态分析cppcheck安装 cppcheck运行 cppcheck 程序员的日常工作,不是摸鱼扯皮,就是在写 Bug。虽然这是一个梗,但也可以看出,程序员的日常一定绕不开 Bug。而花更少的时间修复软件中的 Bug,且不引入新…

Bug:时间字段显示有问题

Bug:时间字段显示有问题 文章目录 Bug:时间字段显示有问题1、问题2、解决方法一:添加注解3、解决方法二:消息转换器自定义对象映射器配置消息转换器 1、问题 ​ 在后端传输时间给前端的时候,发现前端的时间显示有问题…

汽车开发阶段(OTS/VFF/PVS/OS/SOP)

OTS:即英语中的Off Tooling Sample,通常被称为工装样件。它指的是通过配套设备、工装夹具以及模具制造出来的样品,但并不强调生产的时间效率,主要用于验证产品的设计能力。 VFF:在德语中表示为Vorserien Freigabefahr…

太速科技-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP光纤收发子卡 一、板卡概述 本卡是一个FPGA夹层卡(FMC)模块,可提供高达2个QSFP / QSFP 模块接口,直接插入千兆位级收发器(MGT)的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kin…

eNsp公司管理的网络NAT策略搭建

实验拓扑图 实验需求: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9,多出口环境基于带…

JavaWeb(四:Ajax与Json)

一、Ajax 1.定义 Ajax(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML AJAX 不是新的编程语言,指的是⼀种交互方式:异步加载。 客户端和服务器的数据交互更新在局部页面的技术,不需要刷新…

VUE:跨域配置代理服务器

//在vite.config。js中,同插件配置同级进行配置server:{proxy:{"/myrequest":{//代理域名,可自行修改target:"https://m.wzj.com/",//访问服务器的目标域名changeOrigin:true,//允许跨域configure:(proxy,options) > {proxy.on(&…

未知物材料成分配方检测分析

材料成分配方分析是一种通过分析材料的化学成分、结构和性质来确定其组成和配方的方法。这对于产品质量控制、新产品研发、工业问题解决和环保等领域具有重要意义。进行材料成分配方分析通常需要以下步骤: 1. 样品采集:采集需要分析的材料样品&#xff0…

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。 在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…

再谈有关JVM中的四种引用

1.强引用 强引用就是我们平时使用最多的那种引用,就比如以下的代码 //创建一个对象 Object obj new Object();//强引用 这个例子就是创建了一个对象并建立了强引用,强引用一般就是默认支持的当内存不足的时候,JVM开始垃圾回收&#xff0c…