74 lines
1.9 KiB
Markdown
74 lines
1.9 KiB
Markdown
# 二维码批量识别工具(qr-scanner)
|
||
|
||
一个轻量级的二维码批量识别工具:上传 ZIP 或图片,批量识别二维码内容,实时显示进度,并导出 Excel 报告。
|
||
|
||
## 功能
|
||
|
||
- 上传 ZIP(自动解压并提取图片)
|
||
- 上传单张/多张图片
|
||
- QR Code 识别(单图多码输出多条内容)
|
||
- 进度查询与 SSE 实时推送
|
||
- Excel 导出(图片相对路径、识别内容、状态、错误信息、处理时间)
|
||
|
||
## 运行
|
||
|
||
环境变量:
|
||
|
||
- `QR_SCANNER_PORT`:端口(默认 8001)
|
||
- `QR_SCANNER_TEMP_DIR`:临时目录(默认 /tmp/qr-scanner)
|
||
- `QR_SCANNER_RETENTION_MINUTES`:结果保留分钟数(默认 30)
|
||
- `QR_SCANNER_DEFAULT_WORKERS`:默认并发(默认 4)
|
||
- `QR_SCANNER_DEFAULT_TIMEOUT_S`:默认单张超时秒(默认 30)
|
||
- `QR_SCANNER_DEBUG_DELAY_MS`:调试延时毫秒(默认 0,每处理一张额外 sleep)
|
||
|
||
启动服务:
|
||
|
||
```bash
|
||
go run .
|
||
```
|
||
|
||
浏览器打开:
|
||
|
||
- `http://localhost:8001/`
|
||
|
||
## API(v1.0)
|
||
|
||
- `POST /api/upload`:multipart/form-data,字段 `files`(可多文件)
|
||
- `POST /api/scan`:`{"taskID":"...","concurrency":4,"timeout":30}`:推送、处理任务
|
||
- `GET /api/progress/{taskID}`:查询进度
|
||
- `GET /api/progress/{taskID}/stream`:SSE 推送进度
|
||
- `GET /api/results/{taskID}`:查询结果
|
||
- `GET /api/export/{taskID}`:下载 Excel
|
||
- `POST /api/cancel/{taskID}`:取消任务
|
||
|
||
## Docker
|
||
|
||
构建镜像(默认从 docker.io 拉取基础镜像):
|
||
|
||
```bash
|
||
docker build -t qr-scanner:local .
|
||
```
|
||
|
||
国内网络可切换基础镜像仓库(示例):
|
||
|
||
```bash
|
||
docker build --build-arg BASE_IMAGE_REGISTRY=docker.m.daocloud.io -t qr-scanner:local .
|
||
```
|
||
|
||
运行:
|
||
|
||
```bash
|
||
docker run -d --name qr-scanner -p 8080:8080 qr-scanner:local
|
||
docker logs -f --tail=200 qr-scanner
|
||
```
|
||
|
||
## 部署脚本
|
||
|
||
脚本路径:`deploy/deploy.sh`
|
||
|
||
示例:
|
||
|
||
```bash
|
||
REPO_URL=git@github.com:xxx/qr-scanner.git BRANCH=main HOST_PORT=8080 ./deploy/deploy.sh
|
||
```
|