一个简单易用的验光单上传与 OCR 识别管理系统,专为眼镜店设计。
- ✅ 上传与拍照:支持拖拽/选择文件;手机端可直接调起摄像头拍照上传
- ✅ OCR 识别:PaddleOCR 自动识别姓名、年龄、手机号、验光师、日期、视力结果、金额(含镜片/镜架价)
- ✅ 记录管理:查看、搜索、排序、编辑、删除;软删进回收站,30 天后自动清理
- ✅ 统计提醒:列表金额汇总、选中金额汇总;验光超过 90 天标红提醒
- ✅ 批量操作:多选批量删除;回收站可恢复/彻底删除
- ✅ 移动端访问:页面展示本机局域网 IP、Wi-Fi 名、上传页链接与复制按钮;若二维码库可用则显示扫码入口
- ✅ 多店部署:可配合 Syncthing 同步数据库与图片实现多店共享
- 下载 Python 3.8+,安装时勾选 “Add Python to PATH”
python --version验证成功即可
pip install -r requirements.txt如需加速:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simplePaddleOCR 如安装失败,系统会自动降级:OCR 关闭,手动填写即可。
方式 A:双击 start_app.bat(推荐)
方式 B:命令行
python app.py看到日志:
[INFO] 数据库初始化完成
[INFO] 服务启动于 http://0.0.0.0:5000
- 本机浏览器:
http://localhost:5000 - 同一 Wi‑Fi 下手机/平板:浏览器访问
http://<本机IP>:5000 - 上传页会显示本机 IP、当前 Wi‑Fi 名、可复制的上传链接,若二维码库可用会显示扫码入口。
- 上传页顶部提供:当前 IP、Wi‑Fi 名、上传链接、一键复制;若能加载二维码库则显示扫码二维码。
- 手机同一 Wi‑Fi 下访问链接即可;上传区有“拍照上传”按钮可直接调用摄像头。
- 如二维码加载不出:直接复制链接到手机浏览器。
如果您有多家门店需要共享数据,请按以下步骤配置:
- 将整个项目文件夹复制到每台电脑
- 在每台电脑上运行
python app.py
Syncthing 是一个免费的文件同步工具,用于在多台电脑之间同步数据。
- 访问 https://syncthing.net/downloads/
- 下载 Windows 版本并安装
- 运行 Syncthing,会自动打开浏览器管理界面
- 在 Syncthing 中点击 "添加文件夹"
- 添加以下两个路径:
验光系统\store.db所在目录验光系统\uploads文件夹
- 在另一台电脑上同样安装 Syncthing
- 通过 "添加设备" 连接两台电脑
- 共享刚才添加的文件夹
- 同步间隔:建议设置为 1 分钟
- 版本控制:建议启用"简单版本控制",保留 5 个版本
重要提示:当两家店同时编辑数据时,Syncthing 可能产生冲突文件!
识别冲突文件:
- 冲突文件名格式:
store.sync-conflict-20240115-123456-XXXXXXXX.db - 文件会出现在同一目录下
处理方法:
- 冲突发生时,数据不会丢失,只是分散在两个文件中
- 停止两边的系统(关闭
python app.py) - 比较两个文件的修改时间,选择保留较新的
- 或使用 SQLite 工具合并两个数据库的数据
- 删除冲突文件,重启系统
预防建议:
- 尽量避免两店同时大量操作
- 如必须同时使用,一店负责上传,另一店只查看
如需从外部网络(如在家)访问店内系统,可使用 Tailscale:
- 访问 https://tailscale.com/download
- 下载并安装 Windows 版本
- 使用 Google 或 Microsoft 账号登录
- 在店内电脑上安装并登录 Tailscale
- 在您的个人电脑/手机上也安装并登录 同一账号
- 两台设备会自动连接到同一个虚拟网络
- 点击系统托盘中的 Tailscale 图标
- 查看店内电脑的 Tailscale IP(格式如
100.x.x.x)
在任意已连接的设备上,打开浏览器访问:
http://100.x.x.x:5000
(将 100.x.x.x 替换为店内电脑的 Tailscale IP)
验光系统/
├── app.py # 主程序
├── requirements.txt # 依赖包列表
├── start_app.bat # 一键启动脚本
├── store.db # 数据库文件(运行后自动生成)
├── uploads/ # 上传的图片存储目录
├── templates/ # 网页模板
│ ├── index.html # 首页(记录列表)
│ ├── upload.html # 上传页面
│ └── recycle.html # 回收站页面
└── README.md # 本说明文件
A: 这是正常情况,系统会以降级模式运行。OCR 功能不可用,但您仍可以:
- 正常上传验光单图片
- 手动填写所有信息
如需启用 OCR,请参考上方的 PaddleOCR 安装说明。
Q: 无法访问 http://localhost:5000
A: 请检查:
- 命令行窗口是否显示"服务启动于 http://0.0.0.0:5000"
- 是否有防火墙阻止了 5000 端口
- 尝试关闭防火墙或添加例外规则
A: 请确保:
- 设备在同一局域网/WiFi 下
- Windows 防火墙允许 Python 通过
- 路由器没有启用设备隔离功能
A: 数据存储在 store.db 文件中:
- 删除的记录会进入回收站,30 天内可恢复
- 建议定期备份
store.db文件和uploads文件夹
如有问题,请检查:
- Python 是否正确安装(命令行输入
python --version) - 依赖是否完整安装(重新运行
pip install -r requirements.txt) - 命令行窗口的错误信息
- 版本:1.1.0
- 更新日期:2026-02-05
- 技术栈:Flask + SQLite + PaddleOCR + Bootstrap 5