EasyOCR本地运行正常,部署至DigitalOcean(Ubuntu22.10)后极慢求助
解决EasyOCR在DigitalOcean Ubuntu服务器运行极慢的问题
可能的原因及修复步骤
1. 服务器配置不足(最常见)
DigitalOcean基础款Droplet(如1核1G内存)跑CPU版EasyOCR会非常吃力,因为EasyOCR的文本检测(CRAFT)和识别模型均为计算密集型。
- 临时方案:升级Droplet配置,至少选择2核2G以上机型,优先选CPU性能更强的AMD系列。
- 长期优化:若不想升级配置,可调整
readtext参数降低计算负载:# 缩小图片尺寸减少计算量,scale越小速度越快但可能影响准确率 results = reader.readtext(img, scale=0.5) # 或调整文本检测的阈值,减少候选框数量 results = reader.readtext(img, width_ths=0.7, height_ths=0.7)
2. 依赖库未正确安装或未优化
Ubuntu默认Python环境可能缺少编译优化,导致EasyOCR依赖的OpenCV、PyTorch等库运行效率低下。
- 重新安装优化后的依赖:
- 卸载现有库:
pip uninstall -y easyocr opencv-python pytorch torchvision - 安装带CPU优化的版本:
# 安装针对CPU优化的PyTorch pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # 安装无头版OpenCV(无GUI依赖,更轻量化) pip install opencv-contrib-python-headless # 重装EasyOCR pip install easyocr
- 卸载现有库:
- 启用OpenMP多核加速:Ubuntu需安装相关依赖以激活多核并行计算:
sudo apt-get update && sudo apt-get install -y libomp-dev
3. 模型文件问题
手动下载模型需确保文件完整且路径权限正常:
- 检查模型大小:
craft_mlt_25k.pth约1GB,english_g2.pth约100MB,若文件大小不符需重新下载。 - 修复路径权限:确保运行代码的用户拥有模型存储路径的读取权限:
sudo chmod -R 755 /var/www/*****/*****/*****/server/utils
4. 图片预处理优化
高分辨率图片(如4K以上)会大幅增加计算量,建议提前缩放:
import cv2 # 将图片宽度缩至1000像素以内,可根据需求调整 img = cv2.imread("your_image_path.jpg") max_width = 1000 if img.shape[1] > max_width: scale = max_width / img.shape[1] img = cv2.resize(img, (int(img.shape[1]*scale), int(img.shape[0]*scale)))
5. 代码逻辑优化
避免重复初始化Reader对象:每次创建reader都会重新加载模型,耗时极长。应将初始化放在全局位置,仅加载一次:
# 全局初始化,仅运行一次 import easyocr path = "/var/www/*****/*****/*****/server/utils" reader = easyocr.Reader(['en'], gpu=False, download_enabled=False, model_storage_directory=path) # 业务处理函数 def process_image(img): results = reader.readtext(img) easyocr_Confidence = 0.4 easyocrString = "" for detection in results: if detection[2] > easyocr_Confidence: easyocrString += detection[1] + ' ' return easyocrString
内容的提问来源于stack exchange,提问作者Redstain
相关产品推荐
相关产品推荐

