YOLO X Layout快速部署使用systemd守护进程确保app.py服务开机自启不中断1. 项目概述YOLO X Layout是一个基于YOLO模型的智能文档版面分析工具它能够自动识别文档中的各种元素类型。这个工具特别适合需要处理大量文档的场景比如文档数字化、内容提取、自动化排版等。它能识别11种不同的文档元素标题Title文本段落Text表格Table图片Picture公式Formula章节标题Section-header列表项List-item页眉Page-header页脚Page-footer标题说明Caption脚注Footnote2. 环境准备与快速部署2.1 系统要求确保你的系统是Linux环境Ubuntu、CentOS等并且已经安装了Python 3.8或更高版本。2.2 安装必要依赖首先安装项目运行所需的基础依赖包# 更新系统包管理器 sudo apt update # 安装Python和基础开发工具 sudo apt install python3 python3-pip python3-venv # 创建项目目录 mkdir -p /root/yolo_x_layout cd /root/yolo_x_layout # 安装项目依赖 pip install gradio4.0.0 opencv-python4.8.0 numpy1.24.0 onnxruntime1.16.02.3 下载模型文件模型文件需要放置在指定目录# 创建模型存储目录 mkdir -p /root/ai-models/AI-ModelScope/yolo_x_layout/ # 这里需要手动下载模型文件到该目录 # 模型文件包括 # - YOLOX Tiny (20MB) # - YOLOX L0.05 Quantized (53MB) # - YOLOX L0.05 (207MB)3. 手动启动与测试服务3.1 第一次启动测试在配置systemd之前我们先手动测试服务是否能正常运行cd /root/yolo_x_layout python /root/yolo_x_layout/app.py如果一切正常你应该能看到服务启动日志显示服务在7860端口监听。3.2 测试Web界面打开浏览器访问 http://localhost:7860你应该能看到一个上传界面。可以尝试上传一张文档图片进行测试。3.3 API接口测试同时打开另一个终端测试API接口是否正常工作# 如果没有测试图片先创建一个简单的测试文件 convert -size 800x600 xc:white test_document.png # 测试API调用 python3 -c import requests url http://localhost:7860/api/predict files {image: open(test_document.png, rb)} data {conf_threshold: 0.25} response requests.post(url, filesfiles, datadata) print(API响应状态:, response.status_code) print(API响应内容:, response.json()) 4. 配置systemd守护进程4.1 创建systemd服务文件为了让YOLO X Layout服务能够开机自启动并在异常退出时自动重启我们需要创建一个systemd服务文件sudo nano /etc/systemd/system/yolo-x-layout.service将以下内容复制到文件中[Unit] DescriptionYOLO X Layout Document Analysis Service Afternetwork.target Wantsnetwork.target [Service] Typesimple Userroot WorkingDirectory/root/yolo_x_layout ExecStart/usr/bin/python3 /root/yolo_x_layout/app.py Restartalways RestartSec10 EnvironmentPYTHONUNBUFFERED1 # 资源限制根据你的硬件调整 MemoryMax2G CPUQuota200% # 日志配置 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target4.2 解释关键配置项Restartalways服务异常退出时自动重启RestartSec10重启前等待10秒避免频繁重启MemoryMax2G限制服务最大内存使用为2GBCPUQuota200%限制CPU使用为2个核心的100%4.3 启用并启动服务# 重新加载systemd配置 sudo systemctl daemon-reload # 启用开机自启动 sudo systemctl enable yolo-x-layout.service # 立即启动服务 sudo systemctl start yolo-x-layout.service # 检查服务状态 sudo systemctl status yolo-x-layout.service5. 服务管理与监控5.1 常用管理命令# 查看服务状态 sudo systemctl status yolo-x-layout # 停止服务 sudo systemctl stop yolo-x-layout # 重启服务 sudo systemctl restart yolo-x-layout # 查看服务日志 sudo journalctl -u yolo-x-layout -f # 查看最近100行日志 sudo journalctl -u yolo-x-layout -n 1005.2 监控服务健康状态你可以创建一个简单的监控脚本#!/bin/bash # monitor_yolo.sh SERVICEyolo-x-layout LOG_FILE/var/log/yolo-x-layout-monitor.log # 检查服务状态 if ! systemctl is-active --quiet $SERVICE; then echo $(date): 服务未运行尝试重启... $LOG_FILE sudo systemctl restart $SERVICE fi # 检查端口是否监听 if ! netstat -tln | grep -q :7860; then echo $(date): 7860端口未监听服务可能异常 $LOG_FILE fi5.3 设置日志轮转创建日志轮转配置防止日志文件过大sudo nano /etc/logrotate.d/yolo-x-layout添加以下内容/var/log/yolo-x-layout-monitor.log { daily missingok rotate 7 compress delaycompress notifempty create 644 root root }6. 故障排除与常见问题6.1 服务启动失败排查如果服务启动失败可以按以下步骤排查# 1. 检查依赖是否安装 pip list | grep -E gradio|opencv|numpy|onnxruntime # 2. 检查模型文件是否存在 ls -la /root/ai-models/AI-ModelScope/yolo_x_layout/ # 3. 手动运行app.py查看错误信息 cd /root/yolo_x_layout python app.py # 4. 检查端口是否被占用 netstat -tlnp | grep :78606.2 性能优化建议如果服务运行缓慢可以考虑以下优化# 使用更轻量级的模型 # 在app.py中修改默认模型为YOLOX Tiny20MB版本 # 调整工作进程数如果支持多进程 # 在systemd服务文件中增加环境变量 EnvironmentWORKER_COUNT2 # 调整图片处理尺寸 # 在API调用时添加size参数限制处理分辨率6.3 内存不足处理如果服务因为内存不足被终止# 查看内存使用情况 sudo journalctl -u yolo-x-layout | grep -i killed # 调整systemd内存限制 # 编辑服务文件增加MemoryMax值 sudo nano /etc/systemd/system/yolo-x-layout.service7. 使用指南7.1 Web界面使用服务启动后通过浏览器访问 http://你的服务器IP:7860上传文档图片点击上传按钮选择要分析的文档图片调整置信度阈值默认0.25值越高识别越严格开始分析点击Analyze Layout按钮查看结果分析完成后会显示识别出的各种元素边界框7.2 API接口调用示例import requests from PIL import Image import io def analyze_document_layout(image_path, conf_threshold0.25): 调用YOLO X Layout API分析文档版面 Args: image_path: 文档图片路径 conf_threshold: 置信度阈值默认0.25 Returns: dict: 分析结果 url http://localhost:7860/api/predict # 读取图片文件 with open(image_path, rb) as f: files {image: f} data {conf_threshold: conf_threshold} # 发送请求 response requests.post(url, filesfiles, datadata) if response.status_code 200: return response.json() else: raise Exception(fAPI请求失败: {response.status_code}) # 使用示例 result analyze_document_layout(document.png) print(识别到的元素数量:, len(result.get(predictions, [])))7.3 批量处理脚本如果需要批量处理多个文档可以编写脚本import os import requests import time def batch_process_documents(image_folder, output_folder, conf_threshold0.25): 批量处理文件夹中的所有文档图片 # 创建输出文件夹 os.makedirs(output_folder, exist_okTrue) # 获取所有图片文件 image_files [f for f in os.listdir(image_folder) if f.lower().endswith((.png, .jpg, .jpeg))] results [] for image_file in image_files: try: image_path os.path.join(image_folder, image_file) print(f处理中: {image_file}) # 调用API result analyze_document_layout(image_path, conf_threshold) # 保存结果 output_file os.path.join(output_folder, f{os.path.splitext(image_file)[0]}.json) with open(output_file, w) as f: import json json.dump(result, f, indent2) results.append((image_file, True, 成功)) # 避免请求过于频繁 time.sleep(1) except Exception as e: results.append((image_file, False, str(e))) return results8. 总结通过systemd配置我们成功实现了YOLO X Layout服务的开机自启动和持续运行保障。这种方法的好处包括自动恢复服务异常退出时会自动重启开机自启系统重启后服务自动启动集中管理使用systemctl统一管理服务状态日志收集所有输出日志都被集中管理资源控制可以限制服务的CPU和内存使用现在你的YOLO X Layout服务已经成为一个可靠的后台服务可以7×24小时不间断运行随时为文档分析需求提供服务。无论是通过Web界面手动上传分析还是通过API接口集成到自动化流程中这个服务都能稳定可靠地工作。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
YOLO X Layout快速部署:使用systemd守护进程确保app.py服务开机自启不中断
YOLO X Layout快速部署使用systemd守护进程确保app.py服务开机自启不中断1. 项目概述YOLO X Layout是一个基于YOLO模型的智能文档版面分析工具它能够自动识别文档中的各种元素类型。这个工具特别适合需要处理大量文档的场景比如文档数字化、内容提取、自动化排版等。它能识别11种不同的文档元素标题Title文本段落Text表格Table图片Picture公式Formula章节标题Section-header列表项List-item页眉Page-header页脚Page-footer标题说明Caption脚注Footnote2. 环境准备与快速部署2.1 系统要求确保你的系统是Linux环境Ubuntu、CentOS等并且已经安装了Python 3.8或更高版本。2.2 安装必要依赖首先安装项目运行所需的基础依赖包# 更新系统包管理器 sudo apt update # 安装Python和基础开发工具 sudo apt install python3 python3-pip python3-venv # 创建项目目录 mkdir -p /root/yolo_x_layout cd /root/yolo_x_layout # 安装项目依赖 pip install gradio4.0.0 opencv-python4.8.0 numpy1.24.0 onnxruntime1.16.02.3 下载模型文件模型文件需要放置在指定目录# 创建模型存储目录 mkdir -p /root/ai-models/AI-ModelScope/yolo_x_layout/ # 这里需要手动下载模型文件到该目录 # 模型文件包括 # - YOLOX Tiny (20MB) # - YOLOX L0.05 Quantized (53MB) # - YOLOX L0.05 (207MB)3. 手动启动与测试服务3.1 第一次启动测试在配置systemd之前我们先手动测试服务是否能正常运行cd /root/yolo_x_layout python /root/yolo_x_layout/app.py如果一切正常你应该能看到服务启动日志显示服务在7860端口监听。3.2 测试Web界面打开浏览器访问 http://localhost:7860你应该能看到一个上传界面。可以尝试上传一张文档图片进行测试。3.3 API接口测试同时打开另一个终端测试API接口是否正常工作# 如果没有测试图片先创建一个简单的测试文件 convert -size 800x600 xc:white test_document.png # 测试API调用 python3 -c import requests url http://localhost:7860/api/predict files {image: open(test_document.png, rb)} data {conf_threshold: 0.25} response requests.post(url, filesfiles, datadata) print(API响应状态:, response.status_code) print(API响应内容:, response.json()) 4. 配置systemd守护进程4.1 创建systemd服务文件为了让YOLO X Layout服务能够开机自启动并在异常退出时自动重启我们需要创建一个systemd服务文件sudo nano /etc/systemd/system/yolo-x-layout.service将以下内容复制到文件中[Unit] DescriptionYOLO X Layout Document Analysis Service Afternetwork.target Wantsnetwork.target [Service] Typesimple Userroot WorkingDirectory/root/yolo_x_layout ExecStart/usr/bin/python3 /root/yolo_x_layout/app.py Restartalways RestartSec10 EnvironmentPYTHONUNBUFFERED1 # 资源限制根据你的硬件调整 MemoryMax2G CPUQuota200% # 日志配置 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target4.2 解释关键配置项Restartalways服务异常退出时自动重启RestartSec10重启前等待10秒避免频繁重启MemoryMax2G限制服务最大内存使用为2GBCPUQuota200%限制CPU使用为2个核心的100%4.3 启用并启动服务# 重新加载systemd配置 sudo systemctl daemon-reload # 启用开机自启动 sudo systemctl enable yolo-x-layout.service # 立即启动服务 sudo systemctl start yolo-x-layout.service # 检查服务状态 sudo systemctl status yolo-x-layout.service5. 服务管理与监控5.1 常用管理命令# 查看服务状态 sudo systemctl status yolo-x-layout # 停止服务 sudo systemctl stop yolo-x-layout # 重启服务 sudo systemctl restart yolo-x-layout # 查看服务日志 sudo journalctl -u yolo-x-layout -f # 查看最近100行日志 sudo journalctl -u yolo-x-layout -n 1005.2 监控服务健康状态你可以创建一个简单的监控脚本#!/bin/bash # monitor_yolo.sh SERVICEyolo-x-layout LOG_FILE/var/log/yolo-x-layout-monitor.log # 检查服务状态 if ! systemctl is-active --quiet $SERVICE; then echo $(date): 服务未运行尝试重启... $LOG_FILE sudo systemctl restart $SERVICE fi # 检查端口是否监听 if ! netstat -tln | grep -q :7860; then echo $(date): 7860端口未监听服务可能异常 $LOG_FILE fi5.3 设置日志轮转创建日志轮转配置防止日志文件过大sudo nano /etc/logrotate.d/yolo-x-layout添加以下内容/var/log/yolo-x-layout-monitor.log { daily missingok rotate 7 compress delaycompress notifempty create 644 root root }6. 故障排除与常见问题6.1 服务启动失败排查如果服务启动失败可以按以下步骤排查# 1. 检查依赖是否安装 pip list | grep -E gradio|opencv|numpy|onnxruntime # 2. 检查模型文件是否存在 ls -la /root/ai-models/AI-ModelScope/yolo_x_layout/ # 3. 手动运行app.py查看错误信息 cd /root/yolo_x_layout python app.py # 4. 检查端口是否被占用 netstat -tlnp | grep :78606.2 性能优化建议如果服务运行缓慢可以考虑以下优化# 使用更轻量级的模型 # 在app.py中修改默认模型为YOLOX Tiny20MB版本 # 调整工作进程数如果支持多进程 # 在systemd服务文件中增加环境变量 EnvironmentWORKER_COUNT2 # 调整图片处理尺寸 # 在API调用时添加size参数限制处理分辨率6.3 内存不足处理如果服务因为内存不足被终止# 查看内存使用情况 sudo journalctl -u yolo-x-layout | grep -i killed # 调整systemd内存限制 # 编辑服务文件增加MemoryMax值 sudo nano /etc/systemd/system/yolo-x-layout.service7. 使用指南7.1 Web界面使用服务启动后通过浏览器访问 http://你的服务器IP:7860上传文档图片点击上传按钮选择要分析的文档图片调整置信度阈值默认0.25值越高识别越严格开始分析点击Analyze Layout按钮查看结果分析完成后会显示识别出的各种元素边界框7.2 API接口调用示例import requests from PIL import Image import io def analyze_document_layout(image_path, conf_threshold0.25): 调用YOLO X Layout API分析文档版面 Args: image_path: 文档图片路径 conf_threshold: 置信度阈值默认0.25 Returns: dict: 分析结果 url http://localhost:7860/api/predict # 读取图片文件 with open(image_path, rb) as f: files {image: f} data {conf_threshold: conf_threshold} # 发送请求 response requests.post(url, filesfiles, datadata) if response.status_code 200: return response.json() else: raise Exception(fAPI请求失败: {response.status_code}) # 使用示例 result analyze_document_layout(document.png) print(识别到的元素数量:, len(result.get(predictions, [])))7.3 批量处理脚本如果需要批量处理多个文档可以编写脚本import os import requests import time def batch_process_documents(image_folder, output_folder, conf_threshold0.25): 批量处理文件夹中的所有文档图片 # 创建输出文件夹 os.makedirs(output_folder, exist_okTrue) # 获取所有图片文件 image_files [f for f in os.listdir(image_folder) if f.lower().endswith((.png, .jpg, .jpeg))] results [] for image_file in image_files: try: image_path os.path.join(image_folder, image_file) print(f处理中: {image_file}) # 调用API result analyze_document_layout(image_path, conf_threshold) # 保存结果 output_file os.path.join(output_folder, f{os.path.splitext(image_file)[0]}.json) with open(output_file, w) as f: import json json.dump(result, f, indent2) results.append((image_file, True, 成功)) # 避免请求过于频繁 time.sleep(1) except Exception as e: results.append((image_file, False, str(e))) return results8. 总结通过systemd配置我们成功实现了YOLO X Layout服务的开机自启动和持续运行保障。这种方法的好处包括自动恢复服务异常退出时会自动重启开机自启系统重启后服务自动启动集中管理使用systemctl统一管理服务状态日志收集所有输出日志都被集中管理资源控制可以限制服务的CPU和内存使用现在你的YOLO X Layout服务已经成为一个可靠的后台服务可以7×24小时不间断运行随时为文档分析需求提供服务。无论是通过Web界面手动上传分析还是通过API接口集成到自动化流程中这个服务都能稳定可靠地工作。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。