实战项目:基于 Python 和 EasyOCR 的智慧物流面单识别系统

实战项目:基于 Python 和 EasyOCR 的智慧物流面单识别系统 项目背景在物流和电商行业每天需要处理大量的快递面单。传统的人工录入方式不仅效率低下而且容易出错。为了解决这个问题我们利用 Python 开发了一个**“智慧物流面单识别系统”**。该系统能够自动上传快递面单图片利用 OCR 技术精准提取运单号、寄件人、收件地址和金额并将数据自动存入数据库支持一键导出 Excel 或 CSV 报表。️ 核心技术栈EasyOCR: 基于 PyTorch 的开源 OCR 库支持 80 多种语言对中文识别效果极佳。Gradio: 快速构建机器学习演示界面的 Python 库无需前端知识即可生成网页。SQLite Pandas: 轻量级数据库存储与数据处理。Regex (re): 强大的正则表达式用于从杂乱的 OCR 文本中清洗出关键信息。 核心功能实现本项目的核心在于如何从 OCR 识别出的“一长串文本”中精准地“抠”出我们想要的信息。1. 运单号提取快递单号通常由字母和数字组成长度在 10-15 位之间。我们定义了多种正则规则来匹配顺丰SF、圆通YT等常见格式。def extract_tracking_number(text): patterns [ r(?![A-Z0-9])[A-Z0-9]{10,15}(?![A-Z0-9]), # 通用字母数字组合 r\b\d{10,15}\b, # 纯数字 rSF\d{12}, # 顺丰专用 rYT\d{13}, # 圆通专用 ] for p in patterns: m re.search(p, text) if m: return m.group() return 2. 智能地址与姓名提取OCR 识别的结果往往包含很多干扰字符。我们通过定位关键词如“寄件人”、“地址”、“金额”来截取有效信息并利用“终止词”如遇到“运费”就停止截取地址来保证数据的纯净度。def extract_address(text): # 定位“地址”关键词后的内容 m re.search(r收件人(?:信息)?[:]*.*?地址[:]\s*([^,\n](?:[,]\s*[^,\n])*), text, re.DOTALL) if m: addr m.group(1).strip() # 遇到“运费”、“电话”等词强制截断防止提取多余信息 stop_pattern r(运费|金额|货物|重量|运单编号|运单|电话|姓名) stop_match re.search(stop_pattern, addr) if stop_match: addr addr[:stop_match.start()].strip() return addr return ️ 交互界面与数据管理为了让非技术人员也能使用我们使用Gradio搭建了一个简洁的 Web 界面。主要模块文件上传区支持批量上传.jpg,.png等格式的面单图片。处理引擎调用easyocr.Reader进行文字识别。调用上述正则函数清洗数据。自动存入 SQLite 数据库 (logistics.db)。数据展示与导出识别结果实时显示在表格中。支持一键导出CSV或Excel文件方便财务对账。Gradio 界面代码片段with gr.Blocks(title智慧物流 - 面单识别系统) as demo: gr.Markdown(# 智慧物流 · 面单信息自动识别系统) with gr.Row(): with gr.Column(scale1): file_input gr.File(label上传面单图片, file_countmultiple) process_btn gr.Button( 开始识别, variantprimary) with gr.Column(scale2): output_table gr.Dataframe(label识别结果, interactiveTrue) # 绑定事件 process_btn.click(fnprocess_batch, inputsfile_input, outputsoutput_table) 如何运行你需要安装以下依赖库。建议在 Python 3.8 环境下运行。1. 安装依赖pip install easyocr paddlepaddle paddleocr pandas gradio sqlite3(注虽然代码主要使用 EasyOCR但保留了 PaddleOCR 的导入以防后续扩展PaddlePaddle 安装较大如仅需 EasyOCR 可忽略)2. 运行程序将代码保存为app.py在终端运行python app.py运行成功后终端会输出一个本地链接如http://127.0.0.1:7860或公网分享链接点击即可打开系统界面。 项目总结通过这个实战项目我们实现了一个完整的AI 自动化工作流输入非结构化的图片数据。处理AI 识别 正则清洗 数据库存储。输出结构化的 Excel 报表。这套系统不仅适用于物流面单稍作修改调整正则表达式即可应用于名片识别、发票录入、身份证信息提取等场景具有很高的实用价值。 优化建议如果你打算进一步优化这个项目可以尝试模型替换尝试使用 PaddleOCR 替换 EasyOCR对比在复杂背景下的识别率。纠错功能增加一个“人工复核”界面允许用户手动修改识别错误的字段后再存入数据库。部署上线使用 Docker 打包部署到云服务器上供团队多人同时使用。