# com-luck-qrcode-detect **Repository Path**: lwhou/com-luck-qrcode-detect ## Basic Information - **Project Name**: com-luck-qrcode-detect - **Description**: 基于Python Flask的高性能二维码检测识别服务,采用多算法融合技术,提供企业级的二维码识别解决方案。支持多种图像预处理技术和智能检测算法,确保在各种复杂环境下的高识别率。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-29 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔍 Luck QR Code Detection Service
[![Python](https://img.shields.io/badge/Python-3.7+-blue.svg)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-2.x-green.svg)](https://flask.palletsprojects.com/) [![OpenCV](https://img.shields.io/badge/OpenCV-4.x-red.svg)](https://opencv.org/) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/) [![License](https://img.shields.io/badge/License-Open%20Source-brightgreen.svg)](./LICENSE) **基于Python Flask的高性能二维码检测识别服务** *支持本地文件和远程URL图片的智能二维码识别* [快速开始](#快速开始) • [API文档](#api接口文档) • [Docker部署](#docker部署) • [示例代码](#示例代码)
--- ## 📋 目录 - [项目介绍](#项目介绍) - [功能特性](#功能特性) - [技术架构](#技术架构) - [快速开始](#快速开始) - [API接口文档](#api接口文档) - [部署方案](#部署方案) - [示例代码](#示例代码) - [配置说明](#配置说明) - [性能优化](#性能优化) - [常见问题](#常见问题) - [更新日志](#更新日志) ## 🚀 项目介绍 **Luck QR Code Detection Service** 是一个基于Python Flask的企业级二维码检测识别服务,采用多算法融合技术,提供高精度的二维码识别解决方案。 ### ✨ 核心亮点 - 🎯 **高识别率**: 多算法融合,复杂环境下识别率 > 90% - 🌐 **URL支持**: 支持本地文件和远程URL图片识别 - ⚡ **高性能**: 单张图片检测 < 2秒,支持批量处理 - 🔒 **企业级**: 内置认证、日志、监控等企业特性 - 🐳 **易部署**: 支持Docker、离线部署等多种方案 - 📖 **完整文档**: 详细的API文档和示例代码 ## 🔧 功能特性 ### 🔍 智能检测算法 | 检测方法 | 说明 | 适用场景 | |---------|------|----------| | **原图检测** | 直接检测原始图片 | 高质量、清晰的二维码图片 | | **预处理检测** | 灰度化、二值化、形态学处理 | 模糊、噪点较多的图片 | | **多尺度检测** | 0.5x、1.5x、2.0x缩放检测 | 二维码过大或过小的图片 | | **旋转检测** | 90°、180°、270°旋转检测 | 方向不正的二维码图片 | | **边缘增强** | 直方图均衡化增强 | 对比度低、光照不均的图片 | ### 📊 处理模式 - ✅ **单张检测**: 支持单个图片文件或URL的二维码识别 - ✅ **批量处理**: 支持多个图片文件或URL的批量检测 - ✅ **目录扫描**: 支持指定目录下所有图片的自动检测 - ✅ **混合处理**: 支持本地文件和URL混合批量检测 - ✅ **格式支持**: JPG、JPEG、PNG、BMP、TIFF等主流格式 ### 🌐 URL功能特性 - 🔗 **智能识别**: 自动识别输入是本地路径还是URL - 🛡️ **安全下载**: 30秒超时保护,防爬虫User-Agent - 🗂️ **格式自适应**: 自动识别图片格式并处理 - 🧹 **自动清理**: 临时文件自动清理,避免磁盘占用 - ⚡ **流式下载**: 节省内存,支持大图片处理 ### 🌐 API服务 - 🔌 **RESTful设计**: 标准HTTP接口,易于集成 - 📄 **JSON响应**: 统一格式,包含详细检测结果 - 🔐 **认证安全**: HTTP Basic Auth认证机制 - 🌍 **跨域支持**: 支持CORS跨域请求 - 📝 **日志记录**: 完整的访问和错误日志 ## 🏗️ 技术架构 ### 核心技术栈 ``` 🐍 Python 3.7+ 🌐 Flask 2.x 🔍 OpenCV 4.x 📦 Docker Ready 🔒 Basic Auth 📊 APScheduler 🌍 CORS Support 📝 Logging 🗄️ PyMySQL (可选) ``` ### 系统架构图 ```mermaid graph TB A[客户端应用] --> B[Flask API Gateway] B --> C[认证中间件] C --> D[路由分发器] D --> E[检测服务层] E --> F[图像处理引擎] F --> G[多算法检测器] G --> H[结果统计分析] I[URL下载器] --> F J[临时文件管理] --> I K[日志系统] --> B L[配置管理] --> B ``` ## 🚀 快速开始 ### 环境要求 - **Python**: 3.7+ - **系统内存**: 建议 2GB+ - **磁盘空间**: 建议 1GB+ ### 方式一:在线安装(推荐) ```bash # 1. 克隆项目 git clone cd com-luck-qrcode-detect # 2. 安装依赖 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 3. 启动服务 python start.py ``` ### 方式二:离线安装 适用于无网络环境或需要离线部署的场景。 ```bash # 在有网络的环境中准备离线包 pip download -r requirements.txt -d ./offline_packages # 在目标服务器上离线安装 pip install --find-links ./offline_packages -r requirements.txt --no-index # 启动服务 python start.py ``` ### 验证安装 ```bash # 检查服务状态 curl http://localhost:5005/detect/ercode # 预期响应 { "code": 0, "data": [ "/detect/ercode/single", "/detect/ercode/batch", "/detect/ercode/directory", "/detect/ercode/url", "/detect/ercode/url/batch" ], "msg": "二维码检测服务部署成功,支持本地文件和远程URL" } ``` ## 📖 API接口文档 ### 🔍 接口总览 | 接口路径 | 方法 | 功能 | 支持类型 | |---------|------|------|----------| | `/detect/ercode` | GET | 服务状态检查 | - | | `/detect/ercode/single` | POST | 单图检测 | 本地路径 + URL | | `/detect/ercode/batch` | POST | 批量检测 | 本地路径 + URL 混合 | | `/detect/ercode/directory` | POST | 目录检测 | 本地目录 | | `/detect/ercode/url` | POST | URL单图检测 | 仅URL | | `/detect/ercode/url/batch` | POST | URL批量检测 | 仅URL | ### 🔐 认证信息 **默认认证**: - 用户名: `admin` - 密码: `luckserver` - Authorization: `Basic YWRtaW46bHVja3NlcnZlcg==` ### 1️⃣ 单图检测(增强版) **接口**: `POST /detect/ercode/single` **支持参数**: - `image_path`: 本地文件路径 - `image_url`: 远程图片URL **请求示例**: ```bash # 本地文件检测 curl -X POST http://localhost:5005/detect/ercode/single \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{"image_path": "/path/to/qrcode.jpg"}' # URL图片检测 curl -X POST http://localhost:5005/detect/ercode/single \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{"image_url": "https://example.com/qrcode.png"}' ``` **响应示例**: ```json { "code": 0, "data": { "success": true, "image_path": "https://example.com/qrcode.png", "qr_data": "https://www.example.com", "method": "原图检测", "is_url": true, "temp_file_path": "/tmp/tmpxxx.jpg" }, "msg": "检测完成" } ``` ### 2️⃣ URL专用检测 **接口**: `POST /detect/ercode/url` **请求示例**: ```bash curl -X POST http://localhost:5005/detect/ercode/url \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{"image_url": "https://example.com/qrcode.png"}' ``` ### 3️⃣ 批量检测(混合模式) **接口**: `POST /detect/ercode/batch` **请求示例**: ```bash # 混合检测:本地文件 + URL curl -X POST http://localhost:5005/detect/ercode/batch \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{ "image_paths": ["/path/to/local1.jpg", "/path/to/local2.png"], "image_urls": ["https://example.com/qr1.png", "https://example.com/qr2.jpg"] }' ``` **响应示例**: ```json { "code": 0, "data": { "total_count": 4, "success_count": 3, "success_rate": 75.0, "results": [ { "success": true, "image_path": "/path/to/local1.jpg", "qr_data": "https://example1.com", "method": "原图检测", "is_url": false }, { "success": true, "image_path": "https://example.com/qr1.png", "qr_data": "https://example2.com", "method": "灰度图检测", "is_url": true } ] }, "msg": "批量检测完成,处理了4个图片(本地+URL),成功率: 75.0%" } ``` ### 4️⃣ URL批量检测 **接口**: `POST /detect/ercode/url/batch` **请求示例**: ```bash curl -X POST http://localhost:5005/detect/ercode/url/batch \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{ "image_urls": [ "https://example.com/qr1.png", "https://example.com/qr2.jpg", "https://example.com/qr3.png" ] }' ``` ### 5️⃣ 目录扫描检测 **接口**: `POST /detect/ercode/directory` **请求示例**: ```bash curl -X POST http://localhost:5005/detect/ercode/directory \ -H "Content-Type: application/json" \ -u admin:luckserver \ -d '{ "directory_path": "/path/to/images/", "file_extensions": [".jpg", ".jpeg", ".png", ".bmp"] }' ``` ### 📊 响应状态码 | 状态码 | 说明 | 处理建议 | |-------|------|----------| | `0` | 成功 | 继续处理结果 | | `1` | 检测失败 | 检查图片路径、格式、质量 | | `401` | 认证失败 | 检查用户名密码 | | `500` | 服务器错误 | 查看日志,联系管理员 | ## 🐳 部署方案 ### Docker部署(推荐) #### 快速启动 ```bash # 1. 构建镜像(指定版本) docker build -t com-luck-qrcode-detect:1.0.0-Alpha . # 2. 运行容器(映射图片目录) docker run -d -p 5005:5005 \ --name com-luck-qrcode-service \ --restart=always \ -v $(pwd)/assets/sample_images:/app/images \ -v $(pwd)/logs:/app/logs \ -e BASIC_AUTH1=admin \ -e BASIC_AUTH2=luckserver \ -e TZ=Asia/Shanghai \ com-luck-qrcode-detect:1.0.0-Alpha # 3. 验证服务 curl http://localhost:5005/detect/ercode ``` **目录映射说明**: - `-v $(pwd)/assets/sample_images:/app/images`: 映射本地图片目录到容器内,用于本地图片检测 - `-v $(pwd)/logs:/app/logs`: 映射日志目录,便于查看服务日志 - 请将 `/assets/sample_images` 替换为实际的图片目录路径 - 请将 `/logs` 替换为实际的日志目录路径 #### Docker Compose部署 **docker-compose.yml**: ```yaml version: '3.8' services: qrcode-detection: build: context: . tags: - com-luck-qrcode-detect:1.0.0-Alpha image: com-luck-qrcode-detect:1.0.0-Alpha container_name: qrcode-service ports: - "5005:5005" environment: - SERVER_PORT=5005 - BASIC_AUTH1=admin - BASIC_AUTH2=luckserver - TZ=Asia/Shanghai volumes: - ./logs:/app/logs - ./assets/sample_images:/app/images # 可以添加更多图片目录映射 # - /path/to/your/images:/app/custom_images restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5005/detect/ercode"] interval: 30s timeout: 10s retries: 3 ``` **启动命令**: ```bash # 启动服务 docker-compose up -d # 查看状态 docker-compose ps docker-compose logs -f # 停止服务 docker-compose down ``` ### Linux系统服务部署 ```bash # 1. 复制服务文件 sudo cp luck-qrcode-detect.service /etc/systemd/system/ # 2. 重新加载配置 sudo systemctl daemon-reload # 3. 启用并启动服务 sudo systemctl enable luck-qrcode-detect.service sudo systemctl start luck-qrcode-detect.service # 4. 查看状态 sudo systemctl status luck-qrcode-detect.service ``` ## 💻 示例代码 ### Python客户端 ```python import requests import json class QRCodeClient: def __init__(self, base_url="http://localhost:5005", username="admin", password="luckserver"): self.base_url = base_url self.auth = (username, password) def detect_single_url(self, image_url): """检测单个URL图片""" data = {"image_url": image_url} response = requests.post( f"{self.base_url}/detect/ercode/url", json=data, auth=self.auth ) return response.json() def detect_batch_mixed(self, local_paths=None, urls=None): """混合批量检测""" data = { "image_paths": local_paths or [], "image_urls": urls or [] } response = requests.post( f"{self.base_url}/detect/ercode/batch", json=data, auth=self.auth ) return response.json() # 使用示例 client = QRCodeClient() # URL检测 result = client.detect_single_url("https://example.com/qrcode.png") print(f"检测结果: {result}") # 混合检测 result = client.detect_batch_mixed( local_paths=["/path/to/local.jpg"], urls=["https://example.com/qr1.png", "https://example.com/qr2.jpg"] ) print(f"批量检测结果: {result}") ``` ### JavaScript客户端 ```javascript class QRCodeClient { constructor(baseUrl = 'http://localhost:5005', username = 'admin', password = 'luckserver') { this.baseUrl = baseUrl; this.auth = btoa(`${username}:${password}`); } async detectSingleUrl(imageUrl) { const response = await fetch(`${this.baseUrl}/detect/ercode/url`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Basic ${this.auth}` }, body: JSON.stringify({ image_url: imageUrl }) }); return await response.json(); } async detectBatchMixed(localPaths = [], urls = []) { const response = await fetch(`${this.baseUrl}/detect/ercode/batch`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Basic ${this.auth}` }, body: JSON.stringify({ image_paths: localPaths, image_urls: urls }) }); return await response.json(); } } // 使用示例 const client = new QRCodeClient(); // URL检测 client.detectSingleUrl('https://example.com/qrcode.png') .then(result => console.log('检测结果:', result)); // 混合检测 client.detectBatchMixed( ['/path/to/local.jpg'], ['https://example.com/qr1.png', 'https://example.com/qr2.jpg'] ).then(result => console.log('批量检测结果:', result)); ``` ### cURL示例 ```bash #!/bin/bash # 配置 BASE_URL="http://localhost:5005" AUTH="admin:luckserver" # 单个URL检测 echo "=== 单个URL检测 ===" curl -X POST "$BASE_URL/detect/ercode/url" \ -H "Content-Type: application/json" \ -u "$AUTH" \ -d '{"image_url": "https://example.com/qrcode.png"}' \ | jq . # 批量URL检测 echo "\n=== 批量URL检测 ===" curl -X POST "$BASE_URL/detect/ercode/url/batch" \ -H "Content-Type: application/json" \ -u "$AUTH" \ -d '{ "image_urls": [ "https://example.com/qr1.png", "https://example.com/qr2.jpg" ] }' \ | jq . # 混合检测 echo "\n=== 混合检测 ===" curl -X POST "$BASE_URL/detect/ercode/batch" \ -H "Content-Type: application/json" \ -u "$AUTH" \ -d '{ "image_paths": ["/path/to/local.jpg"], "image_urls": ["https://example.com/remote.png"] }' \ | jq . ``` ## ⚙️ 配置说明 ### 环境变量配置(推荐) | 环境变量 | 说明 | 默认值 | 示例 | |---------|------|--------|------| | `SERVER_PORT` | 服务端口号 | 5005 | 5005 | | `BASIC_AUTH1` | 认证用户名 | admin | admin | | `BASIC_AUTH2` | 认证密码 | luckserver | luckserver | | `TZ` | 时区设置 | Asia/Shanghai | Asia/Shanghai | | `LOG_APP_KEY` | 日志应用密钥 | - | uuid-string | | `LOG_APP_SECRET` | 日志应用秘钥 | - | secret-string | | `LOG_URL` | 日志服务地址 | - | http://log-server:port | ### JSON配置文件 **luck/config/LuckConfig.json**: ```json { "server_port": 5005, "basic_auth1": "admin", "basic_auth2": "luckserver", "log_level": "INFO", "max_content_length": 16777216 } ``` ### 生成认证Header ```bash # 生成Basic Auth Header echo -n "admin:luckserver" | base64 # 输出: YWRtaW46bHVja3NlcnZlcg== # 使用自定义用户名密码 echo -n "your_username:your_password" | base64 ``` ## 📊 性能优化 ### 🚀 检测性能优化 #### 图片质量建议 - ✅ **分辨率**: 800x800 到 2000x2000 像素 - ✅ **二维码占比**: 图片面积的 10%-50% - ✅ **格式选择**: PNG > JPG > BMP - ❌ **避免**: 过度压缩的JPEG图片 #### 批量处理优化 - 📦 **批次大小**: 单次不超过 50 张图片 - ⏱️ **超时设置**: URL下载超时 30 秒 - 🔄 **重试机制**: 网络失败自动重试 - 🧹 **资源清理**: 及时清理临时文件 ### 🖥️ 服务器配置建议 | 配置项 | 最低要求 | 推荐配置 | 高性能配置 | |-------|---------|----------|------------| | **CPU** | 1核心 | 2核心 | 4核心+ | | **内存** | 1GB | 2GB | 4GB+ | | **存储** | HDD | SSD | NVMe SSD | | **网络** | 10Mbps | 100Mbps | 1Gbps+ | ### 📈 监控指标 ```bash # 检查服务状态 curl -s http://localhost:5005/detect/ercode | jq . # 监控系统资源 top -p $(pgrep -f "python.*start.py") # 查看日志 tail -f logs/$(date +%Y-%m-%d).log ``` **关键指标**: - 🎯 **检测成功率**: > 90% - ⚡ **平均响应时间**: < 2秒 - 💾 **内存使用**: < 500MB - 🔥 **CPU使用**: 空闲时 < 5% ## ❓ 常见问题 ### 🔍 检测相关问题
Q: 为什么某些二维码检测不到? **可能原因**: - 图片质量过低或模糊 - 二维码损坏或不完整 - 光照条件不佳 - 二维码过小或过大 - 图片格式不支持 **解决方案**: - 确保图片清晰,二维码完整 - 调整图片亮度和对比度 - 尝试不同的图片格式 - 确保二维码在图片中占合适比例
Q: URL图片下载失败怎么办? **可能原因**: - 网络连接问题 - URL地址无效 - 服务器拒绝访问 - 图片格式不支持 **解决方案**: - 检查网络连接 - 验证URL地址有效性 - 确认图片可以正常访问 - 检查图片Content-Type
### 🔧 部署相关问题
Q: Docker容器启动失败? **检查项**: - 端口是否被占用: `netstat -tlnp | grep 5005` - 环境变量配置是否正确 - 镜像是否构建成功: `docker images` - 系统资源是否充足: `docker stats` **解决方案**: ```bash # 查看详细错误 docker logs qrcode-service # 重新构建镜像 docker build --no-cache -t com-luck-qrcode-detect:latest . # 使用不同端口 docker run -p 5006:5005 com-luck-qrcode-detect:latest ```
Q: 认证失败怎么办? **检查项**: - Authorization Header格式是否正确 - 用户名密码是否匹配 - Base64编码是否正确 - 环境变量是否生效 **解决方案**: ```bash # 重新生成认证Header echo -n "admin:luckserver" | base64 # 检查环境变量 echo $BASIC_AUTH1 $BASIC_AUTH2 # 测试认证 curl -u admin:luckserver http://localhost:5005/detect/ercode ```
### 🐛 错误代码对照表 | 错误代码 | 错误信息 | 解决方案 | |---------|---------|----------| | `0` | 成功 | 继续处理 | | `1` | 检测失败 | 检查图片路径和格式 | | `401` | 认证失败 | 检查用户名密码 | | `404` | 接口不存在 | 检查API路径 | | `500` | 服务器内部错误 | 查看日志文件 | | `timeout` | 请求超时 | 检查网络连接 | ## 📁 项目结构 ``` com-luck-qrcode-detect/ ├── 🚀 start.py # 服务启动入口 ├── 🪟 start.bat # Windows启动脚本 ├── 📦 requirements.txt # Python依赖包 ├── 🐳 Dockerfile # Docker镜像构建 ├── 🔧 luck-qrcode-detect.service # Linux系统服务 ├── 📖 README.md # 项目文档 ├── 📖 URL_FEATURE_README.md # URL功能说明 ├── 📝 examples/ # 示例程序 │ ├── demo_client.py # Python客户端示例 │ ├── demo_url_client.py # URL功能示例 │ └── demo_client.java # Java客户端示例 ├── 🧪 tests/ # 测试文件 │ └── Test.py # 测试脚本 ├── 🖼️ assets/ # 资源文件 │ └── sample_images/ # 示例图片 ├── 📦 offline_packages/ # 离线安装包 └── 🏗️ luck/ # 核心代码 ├── LuckMain.py # Flask主应用 ├── config/ # 配置文件 │ └── LuckConfig.json # 应用配置 ├── core/ # 核心工具 │ └── LuckConstant.py # 常量定义 ├── detect/ercode/ # 检测服务 │ ├── LuckDeteclErcpdeMain.py # API路由 │ └── LuckDeteclErcpdeService.py # 检测服务 └── resource/ # 静态资源 └── favicon.ico # 网站图标 ``` ## 📝 更新日志 ### v1.1.0 (2024-12-XX) 🆕 #### ✨ 新增功能 - 🌐 **URL支持**: 完整的远程图片URL识别功能 - 🔗 **新增接口**: `/detect/ercode/url` 和 `/detect/ercode/url/batch` - 🔄 **混合检测**: 支持本地文件和URL混合批量处理 - 🛡️ **安全增强**: URL下载超时保护和防爬虫机制 - 🧹 **资源管理**: 自动临时文件清理机制 #### 🔧 功能增强 - 📈 **接口升级**: 现有接口支持URL参数 - 🎯 **智能识别**: 自动区分本地路径和URL - 📊 **结果优化**: 增加URL标识和临时文件路径信息 - 📖 **文档完善**: 新增URL功能详细说明和示例 #### 🐛 问题修复 - 🔒 **安全修复**: 修复潜在的文件路径安全问题 - 💾 **内存优化**: 优化大图片处理的内存使用 - 🔄 **错误处理**: 改进网络异常和超时处理 ### 1.0.0-Alpha (2024-04-29) #### ✨ 初始功能 - 🔍 多算法二维码检测 - 🌐 RESTful API接口 - 🐳 Docker部署支持 - 📦 离线安装支持 - 🔐 Basic Auth认证 - 📝 完整API文档 ## 🤝 参与贡献 ### 贡献指南 1. **Fork 本仓库** 2. **创建特性分支**: `git checkout -b feature/AmazingFeature` 3. **提交更改**: `git commit -m 'Add some AmazingFeature'` 4. **推送到分支**: `git push origin feature/AmazingFeature` 5. **创建 Pull Request** ### 代码规范 - 🐍 遵循 PEP 8 Python代码规范 - 📝 添加必要的注释和文档字符串 - 🧪 编写单元测试 - ✅ 确保代码通过现有测试 ### 贡献方向 - 🐛 **Bug修复**: 修复已知问题 - ✨ **新功能**: 开发新的检测算法或功能 - 📚 **文档改进**: 完善文档和示例 - 🔧 **性能优化**: 提升检测速度和准确率 - 🧪 **测试用例**: 增加测试覆盖率 ## 📞 技术支持 ### 联系方式 - **作者**: Jonny - **邮箱**: [请在此添加邮箱] - **项目地址**: [请在此添加仓库地址] ### 获取帮助 1. 📖 查看本文档的常见问题解答 2. 🔍 检查项目的 Issues 页面 3. 🆕 提交新的 Issue 描述问题 4. 📧 联系项目维护者 ### 问题反馈模板 ```markdown **环境信息**: - 操作系统: - Python版本: - 部署方式: **问题描述**: [详细描述遇到的问题] **复现步骤**: 1. 2. 3. **期望结果**: [描述期望的结果] **实际结果**: [描述实际发生的情况] **日志信息**: [粘贴相关的错误日志] ``` ## 📄 许可证 本项目采用开源许可证,详情请查看 [LICENSE](LICENSE) 文件。 ---
**⭐ 如果这个项目对你有帮助,请给它一个星标!** [![GitHub stars](https://img.shields.io/github/stars/your-username/com-luck-qrcode-detect.svg?style=social&label=Star)](https://github.com/your-username/com-luck-qrcode-detect) [![GitHub forks](https://img.shields.io/github/forks/your-username/com-luck-qrcode-detect.svg?style=social&label=Fork)](https://github.com/your-username/com-luck-qrcode-detect/fork) [![GitHub issues](https://img.shields.io/github/issues/your-username/com-luck-qrcode-detect.svg)](https://github.com/your-username/com-luck-qrcode-detect/issues) **🔗 [项目主页](.) | 📖 [API文档](#api接口文档) | 🐳 [Docker Hub](.) | 📧 [问题反馈](.)** *Made with ❤️ by Jonny*