修复 OCR libGL.so.1 缺失:安装 libgl1 等系统依赖。
- 新增 deploy/install-ocr-deps.sh,update.sh 自动检查 - install.sh 预装 OpenGL/Mesa 库
This commit is contained in:
@@ -113,7 +113,10 @@ def _process_wrong_question(question_id: uuid.UUID):
|
|||||||
db.commit()
|
db.commit()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
wq.status = WrongQuestionStatus.failed
|
wq.status = WrongQuestionStatus.failed
|
||||||
wq.error_message = _short_error(exc, "OCR 识别失败:")
|
msg = _short_error(exc, "OCR 识别失败:")
|
||||||
|
if "libGL" in str(exc):
|
||||||
|
msg += " 请在服务器执行: sudo bash deploy/install-ocr-deps.sh && systemctl restart grade-archive"
|
||||||
|
wq.error_message = msg
|
||||||
db.commit()
|
db.commit()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
|
|
||||||
|
# 无图形界面服务器:避免 OpenCV/Paddle 依赖 X11
|
||||||
|
os.environ.setdefault("OPENCV_IO_ENABLE_OPENEXR", "0")
|
||||||
|
|
||||||
_ocr_engine = None
|
_ocr_engine = None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# PaddleOCR / OpenCV 在无图形界面服务器上所需的系统库
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [[ "${EUID:-$(id -u)}" -ne 0 ]]; then
|
||||||
|
echo "请使用 root 运行: sudo bash deploy/install-ocr-deps.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
NC='\033[0m'
|
||||||
|
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||||
|
|
||||||
|
log_info "安装 OCR 依赖(libGL 等)…"
|
||||||
|
apt-get update -qq
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
|
||||||
|
libgl1 \
|
||||||
|
libglx-mesa0 \
|
||||||
|
libgbm1 \
|
||||||
|
libgomp1 \
|
||||||
|
libglib2.0-0 \
|
||||||
|
libsm6 \
|
||||||
|
libxrender1 \
|
||||||
|
libxext6 \
|
||||||
|
libxcb1 \
|
||||||
|
libfontconfig1
|
||||||
|
|
||||||
|
log_info "OCR 系统依赖已就绪"
|
||||||
+2
-1
@@ -56,7 +56,8 @@ install_base_packages() {
|
|||||||
python3 python3-venv python3-pip python3-dev \
|
python3 python3-venv python3-pip python3-dev \
|
||||||
build-essential libpq-dev \
|
build-essential libpq-dev \
|
||||||
postgresql postgresql-contrib \
|
postgresql postgresql-contrib \
|
||||||
libgomp1 libglib2.0-0 libsm6 libxrender1 libxext6
|
libgl1 libglx-mesa0 libgbm1 \
|
||||||
|
libgomp1 libglib2.0-0 libsm6 libxrender1 libxext6 libxcb1 libfontconfig1
|
||||||
}
|
}
|
||||||
|
|
||||||
clone_or_update_repo() {
|
clone_or_update_repo() {
|
||||||
|
|||||||
@@ -16,5 +16,6 @@ fi
|
|||||||
|
|
||||||
export FRONTEND_DIST="${FRONTEND_DIST:-${ROOT}/frontend/dist}"
|
export FRONTEND_DIST="${FRONTEND_DIST:-${ROOT}/frontend/dist}"
|
||||||
export UPLOAD_DIR="${UPLOAD_DIR:-${ROOT}/uploads}"
|
export UPLOAD_DIR="${UPLOAD_DIR:-${ROOT}/uploads}"
|
||||||
|
export OPENCV_IO_ENABLE_OPENEXR=0
|
||||||
|
|
||||||
exec python -m uvicorn app.main:app --host 0.0.0.0 --port "${WEB_PORT:-23566}"
|
exec python -m uvicorn app.main:app --host 0.0.0.0 --port "${WEB_PORT:-23566}"
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ if command -v pm2 &>/dev/null; then
|
|||||||
pm2 delete grade-api grade-web 2>/dev/null || true
|
pm2 delete grade-api grade-web 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "${EUID:-$(id -u)}" -eq 0 ]]; then
|
||||||
|
log_info "检查 OCR 系统依赖(libGL)…"
|
||||||
|
bash "${INSTALL_DIR}/deploy/install-ocr-deps.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
log_info "重启 systemd 服务…"
|
log_info "重启 systemd 服务…"
|
||||||
systemctl restart grade-archive
|
systemctl restart grade-archive
|
||||||
|
|
||||||
|
|||||||
+22
-1
@@ -215,6 +215,27 @@ bash /opt/secondary-school-grade-archive/deploy/backup.sh
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. 技术支持
|
## 9. OCR 报错 libGL.so.1
|
||||||
|
|
||||||
|
若错题识别失败并提示 `libGL.so.1: cannot open shared object file`,说明服务器缺少 OpenGL 运行库(PaddleOCR/OpenCV 需要)。
|
||||||
|
|
||||||
|
在服务器执行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/secondary-school-grade-archive
|
||||||
|
git pull
|
||||||
|
sudo bash deploy/install-ocr-deps.sh
|
||||||
|
sudo systemctl restart grade-archive
|
||||||
|
```
|
||||||
|
|
||||||
|
或执行完整更新(已包含 OCR 依赖检查):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo bash deploy/update.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. 技术支持
|
||||||
|
|
||||||
微信 **dekun03** · 手机 **18364911125**
|
微信 **dekun03** · 手机 **18364911125**
|
||||||
|
|||||||
Reference in New Issue
Block a user