From d80d60f14b148da79da4902194106e992832c164 Mon Sep 17 00:00:00 2001 From: egg Date: Fri, 14 Nov 2025 09:22:56 +0800 Subject: [PATCH] fix: update PaddleOCR 3.x API - replace deprecated gpu_mem parameter with device parameter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PaddleOCR 3.x changed the API: - Removed: use_gpu=True/False and gpu_mem= - Added: device="gpu:0" or device="cpu" Changes: - Updated get_ocr_engine() to use device parameter - Updated get_structure_engine() to use device parameter - GPU mode: device="gpu:{gpu_device_id}" - CPU mode: device="cpu" This fixes the "ValueError: Unknown argument: gpu_mem" runtime error. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- backend/app/services/ocr_service.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/app/services/ocr_service.py b/backend/app/services/ocr_service.py index c8e14da..b4b5746 100644 --- a/backend/app/services/ocr_service.py +++ b/backend/app/services/ocr_service.py @@ -170,11 +170,12 @@ class OCRService: logger.info(f"Initializing PaddleOCR engine for language: {lang} (GPU: {self.use_gpu})") try: + # PaddleOCR 3.x uses 'device' parameter instead of 'use_gpu' and 'gpu_mem' + device = f"gpu:{settings.gpu_device_id}" if self.use_gpu else "cpu" self.ocr_engines[lang] = PaddleOCR( use_angle_cls=True, lang=lang, - use_gpu=self.use_gpu, - gpu_mem=int(settings.gpu_memory_fraction * 1000) if self.use_gpu else 500, + device=device, ) logger.info(f"PaddleOCR engine ready for {lang} ({'GPU' if self.use_gpu else 'CPU'} mode)") @@ -186,7 +187,7 @@ class OCRService: self.ocr_engines[lang] = PaddleOCR( use_angle_cls=True, lang=lang, - use_gpu=False, + device="cpu", ) logger.info(f"PaddleOCR engine ready for {lang} (CPU mode - fallback)") else: @@ -205,6 +206,8 @@ class OCRService: logger.info(f"Initializing PP-StructureV3 engine (GPU: {self.use_gpu})") try: + # PaddleOCR 3.x uses 'device' parameter instead of 'use_gpu' and 'gpu_mem' + device = f"gpu:{settings.gpu_device_id}" if self.use_gpu else "cpu" self.structure_engine = PPStructureV3( use_doc_orientation_classify=False, use_doc_unwarping=False, @@ -212,8 +215,7 @@ class OCRService: use_table_recognition=True, use_formula_recognition=True, layout_threshold=0.5, - use_gpu=self.use_gpu, - gpu_mem=int(settings.gpu_memory_fraction * 1000) if self.use_gpu else 500, + device=device, ) logger.info(f"PP-StructureV3 engine ready ({'GPU' if self.use_gpu else 'CPU'} mode)") @@ -228,7 +230,7 @@ class OCRService: use_table_recognition=True, use_formula_recognition=True, layout_threshold=0.5, - use_gpu=False, + device="cpu", ) logger.info("PP-StructureV3 engine ready (CPU mode - fallback)") else: