前言
大家好,我是机长
本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用
正在跟新中~
项目背景
随着铁路交通的快速发展,火车票作为旅客出行的重要凭证,其信息识别的准确性和效率对提升铁路服务质量和旅客体验至关重要。传统的火车票信息识别方式往往依赖于人工操作,不仅耗时耗力,而且容易出现错误和疏漏。特别是在客流量大的高峰期,人工识别火车票信息更是难以满足实际需求。
因此,基于计算机视觉和深度学习技术的火车票信息识别项目应运而生。该项目旨在通过自动化、智能化的方式,实现对火车票信息的快速、准确识别,从而提高工作效率,降低人力成本,并进一步提升铁路服务的智能化水平。通过该项目的研究和应用,可以推动铁路交通行业的数字化转型和智能化升级,为旅客提供更加便捷、高效的出行服务。
项目运行环境
- 平台: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技术的易用性和模型性能,助力用户快速训练高效模型并实现应用落地。以下是近期几项重要更新的简要整理:
-
FAQ扩展(2020.12.14):为更好地服务用户,PaddleOCR的FAQ部分新增了5个高频问题解答,总数达到129个。我们承诺每周一都会进行更新,确保用户能够及时获取到常见问题的解决方案,欢迎广大用户持续关注。
-
半自动标注工具PPOCRLabel更新(2020.11.25):为提高数据标注效率,PaddleOCR推出了PPOCRLabel工具,该工具能够辅助开发者高效完成OCR数据的标注任务。其输出格式与PP-OCR训练任务无缝对接,极大简化了标注到训练的流程。
-
PP-OCR技术文章发布(2020.9.22):详细阐述了PP-OCR的技术原理与实现细节,论文已上传至arXiv(https://arxiv.org/abs/2009.09941),为学术界和工业界提供了宝贵的参考资料。
-
超轻量模型更新(2020.9.19 & 2020.9.17):
- Mobile Slim系列模型:推出了整体模型大小仅为3.5M的超轻量版本,非常适合在移动端部署使用,满足了移动端设备对模型体积和性能的双重需求。
- Mobile & Server系列模型:更新了中英文OCR模型,性能媲美商业软件,为用户提供了更多选择。
-
多语言支持增强(2020.9.17):除了中英文识别模型外,还新增了对德语、法语、日语、韩语的识别支持,且承诺将持续更新更多语种识别模型,以满足全球用户的需求。
-
安装方式优化(2020.8.24):支持通过whl包直接安装PaddleOCR,简化了安装流程,用户只需按照PaddleocrPackage使用说明操作即可快速上手使用。
-
学习资源更新(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)