从海关出口货物报关单(预录单)PDF中批量提取表头和表体数据,导出为 Excel。
一、系统功能
1.1 前台功能(所有用户)
1.2 后台功能(仅管理员)
1.3 导出 Excel 说明
管理员每月 15 号进入系统,点击「导出 Excel」→「导出当月数据」,即可下载当月所有已解析的报关单数据。导出文件格式与 导出.xlsx 模板一致:
- 报关单表头 sheet:32 列(订单号、报关单、提运单号、发货单位、运输方式、成交方式、合同协议号、毛重、净重、件数等)
- 报关单表体 sheet:13 列(项号、商品编码、商品名称、规格型号、申报数量、法定数量、总价、币制、征免等)
1.4 角色权限
二、安装方法
系统提供两种安装方式,根据使用场景选择。
方式一:二进制安装(推荐普通用户)
无需安装 Python 环境,下载即用。
Windows
- 获取 pdf_web_app 文件夹(包含 pdf_web_app.exe 和依赖文件)
- 双击 pdf_web_app.exe
- 看到 访问: http://localhost:5000 提示后,打开浏览器访问
- 用默认账号登录:admin / admin123
Linux
1. 获取 pdf_web_app 文件夹,上传到服务器
2. 执行:
cd pdf_web_app.
chmod +x pdf_web_app
./pdf_web_app
3. 浏览器访问 http://服务器IP:5000
首次运行会自动在程序同目录下创建 data/ 文件夹(含 SQLite 数据库和 uploads 目录),无需手动配置。
方式二:Docker 安装(适合服务器部署)
适合有 Docker 环境的服务器,数据持久化到宿主机。
# 1. 构建镜像docker build -t pdf-web-app .
# 2. 启动容器(数据持久化到当前目录的 data 文件夹)
docker run -d \
--name pdf-web-app \
-p 5000:5000 \
-v $(pwd)/data:/app/data \
--restart unless-stopped \
pdf-web-app
启动后浏览器访问 http://服务器IP:5000,用默认账号登录。
Docker 常用命令:
# 查看日志
docker logs -f pdf-web-app
# 停止
docker stop pdf-web-app
# 启动(已创建的容器)
docker start pdf-web-app
# 删除容器(数据不丢失,存在宿主机 data 目录)
docker rm -f pdf-web-app
三、使用方法
3.1 首次登录
1. 浏览器访问系统地址
2. 输入默认管理员账号:admin / admin123
3. 登录后进入解析数据查看页面
3.2 管理员操作流程
日常使用(每月 15 号导出数据)
登录系统,进入「解析数据查看」
查看表头和表体数据,确认无误
点击「导出 Excel」→「当月全部(表头+表体)」
浏览器自动下载 xlsx 文件
管理用户
进入「用户管理」
点击「添加用户」逐个添加,或点击「批量导入」一次性导入多个
批量导入格式:每行一个用户,格式为 用户名,密码,角色,显示名
zhangsan,123456,user,张三
lisi,654321,user,李四
wangwu,888888,admin,王五
3.3 普通用户操作流程
- 登录系统,进入「PDF 数据管理」
- 点击「上传 PDF」,选择 PDF 文件(仅支持 .pdf 格式)
- 上传后系统自动解析,状态显示为「已解析」
- 如需修改数据,点击「编辑」按钮,可修改表头和表体
- 如解析有误,点击「重新解析」按钮重新提取
- 不需要的记录可点击「删除」按钮删除
3.4 数据存储位置
备份只需复制 data/ 文件夹即可。
四、开发人员部署编译方法
4.1 环境要求
4.2 开发环境搭建
# 1. 克隆代码
git clone https://gitee.com/ydxjyjkzh/pdf-to-excel.git
cd pdf-to-excel
# 2. 创建虚拟环境(可选但推荐)
python -m venv venv
# Windows 激活
venv\Scripts\activate
# Linux 激活
source venv/bin/activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 运行
python app.py
浏览器访问http://localhost:5000,默认账号admin / admin123。
开发模式下 Flask 开启 debug,代码修改后自动重启。
4.3 Docker 开发环境
# 构建并运行
docker build -t pdf-web-app .
docker run -d -p 5000:5000 -v $(pwd)/data:/app/data pdf-web-app
4.4 打包二进制文件
重要:PyInstaller 不支持交叉编译,必须在目标平台上打包。
-
要生成 Windows exe → 在 Windows 机器上打包 -
要生成 Linux 二进制 → 在 Linux 机器上打包
# 方法一:双击执行
build_win.bat
# 方法二:命令行执行
pip install -r requirements.txt
pip install pyinstaller
pyinstaller build.spec --noconfirm
打包结果:dist/pdf_web_app/pdf_web_app.exe
# 安装系统依赖
sudo apt install -y libglib2.0-0 libgl1-mesa-glx
# Ubuntu/Debian
# 或
sudo yum install -y glib2 mesa-libGL
# CentOS/RHEL
# 执行打包
chmod +x build_linux.sh
./build_linux.sh
打包结果:dist/pdf_web_app/pdf_web_app
4.5 项目结构
pdf-to-excel/
├── app.py
# Flask 主应用(路由 + API + 认证 + RBAC)
├── config.py
# 配置(密钥 / 数据库路径 / 上传目录)
├── models.py
# 数据库模型(User / PdfRecord / HeaderData / BodyData)
├── pdf_parser.py
# PDF 解析模块(PyMuPDF + 正则,Web 版)
├── pdf_to_excel.py
# PDF 批量提取脚本(独立命令行工具)
├── requirements.txt
# Python 依赖
├── Dockerfile
# Docker 构建配置
├── build.spec
# PyInstaller 打包配置
├── build_win.bat
# Windows 一键打包脚本
├── build_linux.sh
# Linux 一键打包脚本
├── 导出.xlsx
# Excel 导出模板(4 个 sheet)
├── templates/
# Jinja2 前端模板
│ ├── base.html
# 基础模板(导航栏 + 侧边栏)
│ ├── login.html
# 登录页
│ ├── pdf_list.html
# PDF 数据管理页
│ ├── user_manage.html
# 用户管理页(仅管理员)
│ └── data_view.html
# 解析数据查看页(仅管理员)
├── static/
│ └── js/api.js
# 全局 API 请求工具
└── data/
# 运行时自动创建(不入版本控制)
├── app.db
# SQLite 数据库
└── uploads/
# 上传的 PDF 文件
4.6 数据库结构
4.7 API 接口列表
所有接口均为 POST 方式(因加解密需求),返回统一 JSON 格式 {code, msg, data}。
4.8 技术栈
看完不过瘾,那就自己发一篇吧!












![表情[nanguo]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/nanguo.gif)
![表情[haobang]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/haobang.gif)
![表情[shuai]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/shuai.gif)
![表情[deyi]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/deyi.gif)
![表情[chi]-寻找资源网](http://www.seekresource.com/wp-content/themes/zibll/img/smilies/chi.gif)



暂无评论内容