[2025-12-01 23:41:24,914] [MainThread] [DEBUG] [image_processor3.py:__init__:58] tracemalloc 메모리 추적 시작 [2025-12-01 23:41:24,920] [MainThread] [DEBUG] [gpu_utils.py:_setup_directml_environment:55] ✅ DirectML 환경 준비 완료 (Windows DirectX 12 기반) [2025-12-01 23:41:24,920] [MainThread] [DEBUG] [gpu_utils.py:initialize_gpu_state:79] === 🚀 DirectML GPU 상태 초기화 시작 🚀 === [2025-12-01 23:41:24,921] [MainThread] [DEBUG] [gpu_utils.py:initialize_gpu_state:80] 🎯 사용자 GPU 가속 요청: False [2025-12-01 23:41:24,921] [MainThread] [DEBUG] [gpu_utils.py:initialize_gpu_state:81] 💻 현재 운영체제: Windows [2025-12-01 23:41:24,921] [MainThread] [DEBUG] [gpu_utils.py:initialize_gpu_state:84] GPU 가속이 비활성화됨 (toggle_states['use_cuda'] = False) [2025-12-01 23:41:24,921] [MainThread] [INFO] [gpu_utils.py:_set_safe_cpu_mode:157] 🔒 안전한 CPU 모드로 모든 GPU 설정 강제 비활성화 [2025-12-01 23:41:24,921] [MainThread] [DEBUG] [image_processor3.py:__init__:80] 🔧 ImageProcessor3 GPU 상태 요약: [2025-12-01 23:41:24,922] [MainThread] [DEBUG] [image_processor3.py:__init__:81] - CUDA 사용 가능: False [2025-12-01 23:41:24,922] [MainThread] [DEBUG] [image_processor3.py:__init__:82] - toggle_states['use_cuda']: False [2025-12-01 23:41:24,922] [MainThread] [DEBUG] [image_processor3.py:__init__:83] - GPU 하드웨어 정보: {} [2025-12-01 23:41:24,922] [MainThread] [DEBUG] [image_processor3.py:__init__:85] ImageProcessor3 Init toggle_states: {'translation_method': 'llm', 'gemma_api_base_url': 'https://inpaint.m1tcloud.cc', 'gemma_api_timeout': 30, 'request_inpainting_server_url': 'https://inpaint.m1tcloud.cc', 'product_name': 'Test Product', 'category': 'Test Category', 'font_type': '폰트1', 'image_font_path': 'D:\\py\\img_worker\\modules\\fonts\\HakgyoansimDunggeunmisoTTFB.ttf', 'ocr': True, 'use_cuda': False, 'force_cpu_ocr': True, 'inpaint_model': 'request', 'local_inpaint_method': 'request', 'TEMP_IMAGE_DIR': 'D:\\py\\img_worker\\modules\\test\\temp', 'output_image_format': 'jpg', 'watermark_toggle': False, 'store_ocr_data_to_db': False, 'ocr_engine': 'onnx'} [2025-12-01 23:41:24,922] [MainThread] [DEBUG] [image_processor3.py:__init__:88] is_member_valid: True [2025-12-01 23:41:24,923] [MainThread] [DEBUG] [image_processor3.py:__init__:110] debug_images 디렉토리 이미 존재: D:\py\img_worker\modules\debug_images [2025-12-01 23:41:24,923] [MainThread] [DEBUG] [image_processor3.py:__init__:118] self.font_path: D:\py\img_worker\modules\fonts\HakgyoansimDunggeunmisoTTFB.ttf [2025-12-01 23:41:24,923] [MainThread] [DEBUG] [image_processor3.py:__init__:120] toggle_states font_path: D:\py\img_worker\modules\fonts\HakgyoansimDunggeunmisoTTFB.ttf [2025-12-01 23:41:24,923] [MainThread] [DEBUG] [image_processor3.py:__init__:122] self.TEMP_IMAGE_DIR: D:\py\img_worker\modules\test\temp [2025-12-01 23:41:24,923] [MainThread] [DEBUG] [image_processor3.py:__init__:124] self.debugging_save_Dir: D:\py\img_worker\modules\debug_images [2025-12-01 23:41:24,924] [MainThread] [DEBUG] [image_processor3.py:__init__:126] self.unwanted_texts: {} [2025-12-01 23:41:24,924] [MainThread] [DEBUG] [image_processor3.py:__init__:128] self.inpaint_method: migan [2025-12-01 23:41:24,924] [MainThread] [DEBUG] [image_processor3.py:__init__:134] Image.MAX_IMAGE_PIXELS set to 20000000 [2025-12-01 23:41:24,924] [MainThread] [DEBUG] [onnx_ocr_wrapper.py:_determine_model_type:447] ONNX 모델 타입 설정값: 자동 선택, GPU 정보: {} [2025-12-01 23:41:24,925] [MainThread] [INFO] [onnx_ocr_wrapper.py:_determine_model_type:453] 자동 선택 모드: GPU 추천 모델 simp 사용 [2025-12-01 23:41:24,925] [MainThread] [INFO] [onnx_ocr_wrapper.py:__init__:324] ONNX OCR 모델 타입 결정: simp (GPU: False) [2025-12-01 23:41:24,925] [MainThread] [INFO] [onnx_ocr_wrapper.py:__init__:333] ONNX OCR 모듈 CPU 모드로 설정 [2025-12-01 23:41:24,925] [MainThread] [INFO] [onnx_ocr_wrapper.py:__init__:356] 🚀 ONNX TextSystem 초기화 시작 (CPU 모드) [2025-12-01 23:41:24,925] [MainThread] [DEBUG] [onnx_ocr_wrapper.py:_initialize_onnx_system:539] 🚀 ONNX TextSystem 초기화 시작 (CPU 모드) [2025-12-01 23:41:26,761] [MainThread] [DEBUG] [onnx_ocr_wrapper.py:_ensure_utf8_encoding:487] 문자 사전 파일 UTF-8 확인 완료: D:\py\img_worker\modules\onnx_ocr_module\dict\ppocr_keys_v1.txt [2025-12-01 23:41:26,849] [MainThread] [INFO] [onnx_ocr_wrapper.py:_initialize_onnx_system:743] ✅ ONNX TextSystem 초기화 완료 (CPU + SIMP (호환성) 모델) [2025-12-01 23:41:26,849] [MainThread] [INFO] [onnx_ocr_wrapper.py:__init__:363] ✅ ONNX TextSystem 초기화 완료 (CPU + SIMP 모델) [2025-12-01 23:41:26,849] [MainThread] [INFO] [onnx_ocr_wrapper.py:__init__:364] ✅ ONNX OCR 모듈 초기화 성공 (CPU 모드) [2025-12-01 23:41:26,850] [MainThread] [INFO] [image_processor3.py:__init__:141] ✅ ONNX OCR 모듈 초기화 성공 [2025-12-01 23:41:26,851] [MainThread] [DEBUG] [image_processor3.py:__init__:153] gemma_api_base_url: https://inpaint.m1tcloud.cc [2025-12-01 23:41:26,851] [MainThread] [INFO] [image_processor3.py:__init__:154] GemmaTranslator 연결: base=https://inpaint.m1tcloud.cc [2025-12-01 23:41:26,852] [MainThread] [INFO] [mask_module_for_paddle.py:__init__:12] 마스크 모듈 초기화 완료 [2025-12-01 23:41:26,852] [MainThread] [DEBUG] [image_processor3.py:__init__:183] MaskModule 초기화 성공 [2025-12-01 23:41:26,852] [MainThread] [INFO] [text_rendering_module.py:__init__:21] 텍스트 렌더링 모듈 초기화 완료 [2025-12-01 23:41:26,852] [MainThread] [INFO] [text_rendering_module.py:__init__:22] 기본 폰트: D:\py\img_worker\modules\fonts\HakgyoansimDunggeunmisoTTFB.ttf [2025-12-01 23:41:26,853] [MainThread] [DEBUG] [image_processor3.py:__init__:189] TextRenderingModule 초기화 성공 [2025-12-01 23:41:26,854] [MainThread] [DEBUG] [postImageManager.py:font_load:40] 폰트 로드 성공: D:\py\img_worker\modules\fonts\HakgyoansimDunggeunmisoTTFB.ttf [2025-12-01 23:41:26,854] [MainThread] [DEBUG] [image_processor3.py:__init__:195] PostImageManager 초기화 성공 [2025-12-01 23:41:26,854] [MainThread] [DEBUG] [request_inpaint.py:__init__:43] Request_AI_Server GPU 상태: CUDA 사용 가능=False [2025-12-01 23:41:26,854] [MainThread] [DEBUG] [image_processor3.py:__init__:218] Request_AI_Server 초기화 성공 [2025-12-01 23:41:26,855] [MainThread] [DEBUG] [image_processor3.py:__init__:225] GoogleTranslate 초기화 성공 [2025-12-01 23:41:26,856] [MainThread] [DEBUG] [image_processor3.py:__init__:258] MIGAN 초기화 건너뜀: inpaint_method=request, local_inpaint_method=request, migan_onnx_path=False [2025-12-01 23:41:27,548] [MainThread] [INFO] [image_processor3.py:__init__:273] 외부 인페인팅 서버 활성화 확인됨: https://inpaint.m1tcloud.cc [2025-12-01 23:41:27,549] [MainThread] [DEBUG] [image_processor3.py:process_single_image:590] 이미지 번역시작 [2025-12-01 23:41:27,549] [MainThread] [DEBUG] [image_processor3.py:process_single_image:592] toggle_states: {'translation_method': 'llm', 'gemma_api_base_url': 'https://inpaint.m1tcloud.cc', 'gemma_api_timeout': 30, 'request_inpainting_server_url': 'https://inpaint.m1tcloud.cc', 'product_name': 'Test Product', 'category': 'Test Category', 'font_type': '폰트1', 'image_font_path': 'D:\\py\\img_worker\\modules\\fonts\\HakgyoansimDunggeunmisoTTFB.ttf', 'ocr': True, 'use_cuda': False, 'force_cpu_ocr': True, 'inpaint_model': 'request', 'local_inpaint_method': 'request', 'TEMP_IMAGE_DIR': 'D:\\py\\img_worker\\modules\\test\\temp', 'output_image_format': 'jpg', 'watermark_toggle': False, 'store_ocr_data_to_db': False, 'ocr_engine': 'onnx'} [2025-12-01 23:41:28,038] [MainThread] [DEBUG] [image_processor3.py:process_single_image:610] 이미지 1 처리 시작: D:\py\img_worker\modules\test\2.jpg - OCR+인페인팅 모드 [2025-12-01 23:41:28,038] [MainThread] [DEBUG] [image_processor3.py:download_image:1328] 로컬 파일 경로 감지, 다운로드 생략: D:\py\img_worker\modules\test\2.jpg [2025-12-01 23:41:28,038] [MainThread] [DEBUG] [image_processor3.py:process_single_image:633] 옵션 이미지는 스케일 처리 건너뛰기: llm_test_result [2025-12-01 23:41:28,039] [MainThread] [DEBUG] [image_processor3.py:process_single_image:643] 이미지 1 로컬 저장위치(옵션 이미지 원본 유지): D:\py\img_worker\modules\test\2.jpg [2025-12-01 23:41:28,046] [MainThread] [INFO] [onnx_ocr_wrapper.py:detect_text:838] 🔍 ONNX OCR 감지 방식: polygon [2025-12-01 23:41:28,701] [MainThread] [INFO] [onnx_ocr_wrapper.py:detect_text:906] ⚡ ONNX OCR 추론 완료: 654.2ms [2025-12-01 23:41:28,702] [MainThread] [INFO] [onnx_ocr_wrapper.py:detect_text:907] 📊 세부 시간 - 감지: 79.0ms, 인식: 550.2ms, 분류: 19.0ms [2025-12-01 23:41:28,714] [MainThread] [INFO] [image_processor3.py:process_single_image:659] 메모리 변화 [OCR 처리]: 30935.2MB -> 31168.1MB (+232.9MB, +0.8%) - 이미지 1 [2025-12-01 23:41:28,727] [MainThread] [DEBUG] [image_processor3.py:process_single_image:664] ocr_results: [{'text': '科尔诺', 'confidence': 0.9947741627693176, 'polygon': [[74.0, 20.0], [157.0, 20.0], [157.0, 49.0], [74.0, 49.0]], 'bbox': (74, 20, 84, 30), 'method': 'polygon'}, {'text': 'MC', 'confidence': 0.6195815205574036, 'polygon': [[243.0, 22.0], [291.0, 22.0], [291.0, 45.0], [243.0, 45.0]], 'bbox': (243, 22, 49, 24), 'method': 'polygon'}, {'text': 'PA', 'confidence': 0.9959151744842529, 'polygon': [[309.0, 22.0], [350.0, 24.0], [349.0, 43.0], [308.0, 41.0]], 'bbox': (308, 22, 43, 22), 'method': 'polygon'}, {'text': 'CNEX', 'confidence': 0.9921517372131348, 'polygon': [[372.0, 25.0], [423.0, 25.0], [423.0, 41.0], [372.0, 41.0]], 'bbox': (372, 25, 52, 17), 'method': 'polygon'}, {'text': 'CE', 'confidence': 0.9579383730888367, 'polygon': [[493.0, 17.0], [542.0, 17.0], [542.0, 48.0], [493.0, 48.0]], 'bbox': (493, 17, 50, 32), 'method': 'polygon'}, {'text': 'SGS', 'confidence': 0.9938830733299255, 'polygon': [[561.0, 19.0], [611.0, 19.0], [611.0, 46.0], [561.0, 46.0]], 'bbox': (561, 19, 51, 28), 'method': 'polygon'}, {'text': 'KORNO', 'confidence': 0.9965261220932007, 'polygon': [[75.0, 53.0], [158.0, 53.0], [158.0, 74.0], [75.0, 74.0]], 'bbox': (75, 53, 84, 22), 'method': 'polygon'}, {'text': 'CMC认证', 'confidence': 0.9946390390396118, 'polygon': [[240.0, 57.0], [291.0, 57.0], [291.0, 71.0], [240.0, 71.0]], 'bbox': (240, 57, 52, 15), 'method': 'polygon'}, {'text': 'CPA认证', 'confidence': 0.9976500272750854, 'polygon': [[306.0, 57.0], [355.0, 57.0], [355.0, 71.0], [306.0, 71.0]], 'bbox': (306, 57, 50, 15), 'method': 'polygon'}, {'text': '国家防爆', 'confidence': 0.9972962141036987, 'polygon': [[371.0, 57.0], [419.0, 57.0], [419.0, 71.0], [371.0, 71.0]], 'bbox': (371, 57, 49, 15), 'method': 'polygon'}, {'text': 'ISO认证', 'confidence': 0.9966510534286499, 'polygon': [[436.0, 57.0], [480.0, 57.0], [480.0, 71.0], [436.0, 71.0]], 'bbox': (436, 57, 45, 15), 'method': 'polygon'}, {'text': 'CE认证', 'confidence': 0.9982095956802368, 'polygon': [[500.0, 57.0], [539.0, 57.0], [539.0, 71.0], [500.0, 71.0]], 'bbox': (500, 57, 40, 15), 'method': 'polygon'}, {'text': 'SGS认证', 'confidence': 0.9988520741462708, 'polygon': [[562.0, 57.0], [609.0, 57.0], [609.0, 71.0], [562.0, 71.0]], 'bbox': (562, 57, 48, 15), 'method': 'polygon'}, {'text': 'GT-1000', 'confidence': 0.9941906332969666, 'polygon': [[45.0, 101.0], [283.0, 101.0], [283.0, 146.0], [45.0, 146.0]], 'bbox': (45, 101, 239, 46), 'method': 'polygon'}, {'text': '激光粉尘检测仪', 'confidence': 0.9979674220085144, 'polygon': [[45.0, 166.0], [407.0, 166.0], [407.0, 211.0], [45.0, 211.0]], 'bbox': (45, 166, 363, 46), 'method': 'polygon'}, {'text': '精度≤±5%F.S', 'confidence': 0.9514796733856201, 'polygon': [[29.0, 239.0], [216.0, 237.0], [216.0, 264.0], [29.0, 266.0]], 'bbox': (29, 237, 188, 30), 'method': 'polygon'}, {'text': '防护等级:', 'confidence': 0.9984657168388367, 'polygon': [[28.0, 297.0], [162.0, 297.0], [162.0, 324.0], [28.0, 324.0]], 'bbox': (28, 297, 135, 28), 'method': 'polygon'}, {'text': ':IP65', 'confidence': 0.9789117574691772, 'polygon': [[148.0, 295.0], [236.0, 295.0], [236.0, 323.0], [148.0, 323.0]], 'bbox': (148, 295, 89, 29), 'method': 'polygon'}, {'text': '过压保护/声光报警/存储打印', 'confidence': 0.9622736573219299, 'polygon': [[23.0, 356.0], [420.0, 356.0], [420.0, 380.0], [23.0, 380.0]], 'bbox': (23, 356, 398, 25), 'method': 'polygon'}, {'text': 'PM0.3/0.5/1.0/2.5/5.0/10um', 'confidence': 0.9829089641571045, 'polygon': [[21.0, 410.0], [425.0, 413.0], [425.0, 440.0], [21.0, 437.0]], 'bbox': (21, 410, 405, 31), 'method': 'polygon'}, {'text': '可同时监测多种粒径尘埃粒子数', 'confidence': 0.996757447719574, 'polygon': [[29.0, 469.0], [371.0, 469.0], [371.0, 492.0], [29.0, 492.0]], 'bbox': (29, 469, 343, 24), 'method': 'polygon'}, {'text': '适合十万级以上洁净室', 'confidence': 0.9917443990707397, 'polygon': [[29.0, 505.0], [271.0, 505.0], [271.0, 526.0], [29.0, 526.0]], 'bbox': (29, 505, 243, 22), 'method': 'polygon'}, {'text': '全国', 'confidence': 0.9994616508483887, 'polygon': [[15.0, 532.0], [119.0, 532.0], [119.0, 589.0], [15.0, 589.0]], 'bbox': (15, 532, 105, 58), 'method': 'polygon'}, {'text': '7天无理由退货', 'confidence': 0.997958242893219, 'polygon': [[194.0, 544.0], [391.0, 544.0], [391.0, 571.0], [194.0, 571.0]], 'bbox': (194, 544, 198, 28), 'method': 'polygon'}, {'text': '赠运险费', 'confidence': 0.9987455606460571, 'polygon': [[428.0, 543.0], [542.0, 543.0], [542.0, 571.0], [428.0, 571.0]], 'bbox': (428, 543, 115, 29), 'method': 'polygon'}, {'text': '包邮', 'confidence': 0.9907816648483276, 'polygon': [[15.0, 585.0], [122.0, 587.0], [121.0, 639.0], [14.0, 637.0]], 'bbox': (14, 585, 109, 55), 'method': 'polygon'}, {'text': '原厂正品/可开发票/质保一年', 'confidence': 0.9911054968833923, 'polygon': [[138.0, 585.0], [625.0, 583.0], [625.0, 617.0], [138.0, 619.0]], 'bbox': (138, 583, 488, 37), 'method': 'polygon'}] [2025-12-01 23:41:28,751] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.5%): '科尔诺' [2025-12-01 23:41:28,751] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'MC' [2025-12-01 23:41:28,751] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'PA' [2025-12-01 23:41:28,752] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'CNEX' [2025-12-01 23:41:28,752] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'CE' [2025-12-01 23:41:28,752] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'SGS' [2025-12-01 23:41:28,752] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'KORNO' [2025-12-01 23:41:28,752] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.5%): 'CMC认证' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.8%): 'CPA认证' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.7%): '国家防爆' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.7%): 'ISO认证' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.8%): 'CE认证' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.9%): 'SGS认证' [2025-12-01 23:41:28,753] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'GT-1000' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.8%): '激光粉尘检测仪' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 95.1%): '精度≤±5%F.S' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.8%): '防护等级:' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): ':IP65' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 96.2%): '过压保护/声光报警/存储打印' [2025-12-01 23:41:28,754] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1240] [필터링] 제외 (중국어 없음): 'PM0.3/0.5/1.0/2.5/5.0/10um' [2025-12-01 23:41:28,755] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.7%): '可同时监测多种粒径尘埃粒子数' [2025-12-01 23:41:28,755] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.2%): '适合十万级以上洁净室' [2025-12-01 23:41:28,755] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.9%): '全国' [2025-12-01 23:41:28,755] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.8%): '7天无理由退货' [2025-12-01 23:41:28,755] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.9%): '赠运险费' [2025-12-01 23:41:28,756] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.1%): '包邮' [2025-12-01 23:41:28,756] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1238] [필터링] 포함 (신뢰도 99.1%): '原厂正品/可开发票/质保一年' [2025-12-01 23:41:28,756] [MainThread] [DEBUG] [image_processor3.py:filter_ocr_results:1242] 필터링 결과: 18/27개 (신뢰도 + & 중국어) [2025-12-01 23:41:28,765] [MainThread] [DEBUG] [image_processor3.py:process_single_image:676] filter_ocr_results: [{'text': '科尔诺', 'confidence': 0.9947741627693176, 'polygon': [[74.0, 20.0], [157.0, 20.0], [157.0, 49.0], [74.0, 49.0]], 'bbox': (74, 20, 84, 30), 'method': 'polygon'}, {'text': 'CMC认证', 'confidence': 0.9946390390396118, 'polygon': [[240.0, 57.0], [291.0, 57.0], [291.0, 71.0], [240.0, 71.0]], 'bbox': (240, 57, 52, 15), 'method': 'polygon'}, {'text': 'CPA认证', 'confidence': 0.9976500272750854, 'polygon': [[306.0, 57.0], [355.0, 57.0], [355.0, 71.0], [306.0, 71.0]], 'bbox': (306, 57, 50, 15), 'method': 'polygon'}, {'text': '国家防爆', 'confidence': 0.9972962141036987, 'polygon': [[371.0, 57.0], [419.0, 57.0], [419.0, 71.0], [371.0, 71.0]], 'bbox': (371, 57, 49, 15), 'method': 'polygon'}, {'text': 'ISO认证', 'confidence': 0.9966510534286499, 'polygon': [[436.0, 57.0], [480.0, 57.0], [480.0, 71.0], [436.0, 71.0]], 'bbox': (436, 57, 45, 15), 'method': 'polygon'}, {'text': 'CE认证', 'confidence': 0.9982095956802368, 'polygon': [[500.0, 57.0], [539.0, 57.0], [539.0, 71.0], [500.0, 71.0]], 'bbox': (500, 57, 40, 15), 'method': 'polygon'}, {'text': 'SGS认证', 'confidence': 0.9988520741462708, 'polygon': [[562.0, 57.0], [609.0, 57.0], [609.0, 71.0], [562.0, 71.0]], 'bbox': (562, 57, 48, 15), 'method': 'polygon'}, {'text': '激光粉尘检测仪', 'confidence': 0.9979674220085144, 'polygon': [[45.0, 166.0], [407.0, 166.0], [407.0, 211.0], [45.0, 211.0]], 'bbox': (45, 166, 363, 46), 'method': 'polygon'}, {'text': '精度≤±5%F.S', 'confidence': 0.9514796733856201, 'polygon': [[29.0, 239.0], [216.0, 237.0], [216.0, 264.0], [29.0, 266.0]], 'bbox': (29, 237, 188, 30), 'method': 'polygon'}, {'text': '防护等级:', 'confidence': 0.9984657168388367, 'polygon': [[28.0, 297.0], [162.0, 297.0], [162.0, 324.0], [28.0, 324.0]], 'bbox': (28, 297, 135, 28), 'method': 'polygon'}, {'text': '过压保护/声光报警/存储打印', 'confidence': 0.9622736573219299, 'polygon': [[23.0, 356.0], [420.0, 356.0], [420.0, 380.0], [23.0, 380.0]], 'bbox': (23, 356, 398, 25), 'method': 'polygon'}, {'text': '可同时监测多种粒径尘埃粒子数', 'confidence': 0.996757447719574, 'polygon': [[29.0, 469.0], [371.0, 469.0], [371.0, 492.0], [29.0, 492.0]], 'bbox': (29, 469, 343, 24), 'method': 'polygon'}, {'text': '适合十万级以上洁净室', 'confidence': 0.9917443990707397, 'polygon': [[29.0, 505.0], [271.0, 505.0], [271.0, 526.0], [29.0, 526.0]], 'bbox': (29, 505, 243, 22), 'method': 'polygon'}, {'text': '全国', 'confidence': 0.9994616508483887, 'polygon': [[15.0, 532.0], [119.0, 532.0], [119.0, 589.0], [15.0, 589.0]], 'bbox': (15, 532, 105, 58), 'method': 'polygon'}, {'text': '7天无理由退货', 'confidence': 0.997958242893219, 'polygon': [[194.0, 544.0], [391.0, 544.0], [391.0, 571.0], [194.0, 571.0]], 'bbox': (194, 544, 198, 28), 'method': 'polygon'}, {'text': '赠运险费', 'confidence': 0.9987455606460571, 'polygon': [[428.0, 543.0], [542.0, 543.0], [542.0, 571.0], [428.0, 571.0]], 'bbox': (428, 543, 115, 29), 'method': 'polygon'}, {'text': '包邮', 'confidence': 0.9907816648483276, 'polygon': [[15.0, 585.0], [122.0, 587.0], [121.0, 639.0], [14.0, 637.0]], 'bbox': (14, 585, 109, 55), 'method': 'polygon'}, {'text': '原厂正品/可开发票/质保一年', 'confidence': 0.9911054968833923, 'polygon': [[138.0, 585.0], [625.0, 583.0], [625.0, 617.0], [138.0, 619.0]], 'bbox': (138, 583, 488, 37), 'method': 'polygon'}] [2025-12-01 23:41:28,766] [MainThread] [INFO] [onnx_ocr_wrapper.py:filter_chinese_text:1192] 중국어 텍스트 18개 필터링 완료 [2025-12-01 23:41:28,766] [MainThread] [INFO] [onnx_ocr_wrapper.py:filter_korean_text:1213] 한글 텍스트 0개 필터링 완료 [2025-12-01 23:41:58,986] [asyncio_0] [WARNING] [loggerModule.py:warning:316] [GemmaTranslator] POST https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 실패(HTTPSConnectionPool(host='inpaint.m1tcloud.cc', port=443): Read timed out. (read timeout=30)), 재시도 1/2 대기 1.05s [2025-12-01 23:42:00,514] [asyncio_0] [WARNING] [loggerModule.py:warning:316] [GemmaTranslator] POST https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 실패(502 Server Error: Bad Gateway for url: https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3), 재시도 2/2 대기 0.79s [2025-12-01 23:42:01,433] [asyncio_0] [ERROR] [loggerModule.py:error:322] [GemmaTranslator] run_llm_translation failed: POST https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 실패: 502 Server Error: Bad Gateway for url: https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 [2025-12-01 23:42:01,440] [asyncio_0] [ERROR] [image_processor3.py:batch_llm_translate_texts:1637] LLM 번역 실패: POST https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 실패: 502 Server Error: Bad Gateway for url: https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3. 구글 번역으로 폴백. Traceback (most recent call last): File "D:\py\img_worker\modules\image_processor3.py", line 1628, in batch_llm_translate_texts return self.ai_translator.run_llm_translation( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\py\img_worker\modules\gemma_client.py", line 378, in run_llm_translation raise e File "D:\py\img_worker\modules\gemma_client.py", line 283, in run_llm_translation resp = self._post(path, payload) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\py\img_worker\modules\gemma_client.py", line 100, in _post raise GemmaTranslatorError(f"POST {url} 실패: {last_err}") modules.gemma_client.GemmaTranslatorError: POST https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 실패: 502 Server Error: Bad Gateway for url: https://inpaint.m1tcloud.cc/api/v1/llm/run?retry=3 [2025-12-01 23:42:02,171] [MainThread] [DEBUG] [image_processor3.py:process_single_image:748] translated_texts: ['코르노', 'CMC 인증', 'CPA 자격증', '국가 방폭형', 'ISO 인증', 'CE 인증', 'SGS 인증', '레이저 먼지 감지기', '정확도≤±5%F.S', '보호 수준:', '과전압 보호 / 소리와 빛 경보 / 매장 인쇄', '다양한 입자 크기의 먼지 입자 수를 동시에 모니터링 가능', '클래스 100,000 이상의 클린룸에 적합', '전국', '7일이면 반품할 이유가 없습니다.', '무료 배송 보험', '무료 배송', '오리지널 정품 / 청구 가능 / 1년 보증'] [2025-12-01 23:42:02,171] [MainThread] [DEBUG] [image_processor3.py:process_single_image:749] 마스크 생성 완료 [2025-12-01 23:42:02,171] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 1] 원본 텍스트: '코르노' [2025-12-01 23:42:02,171] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 1] 분리된 단어: ['코르노'] [2025-12-01 23:42:02,172] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 1] 변경 없음: '코르노' [2025-12-01 23:42:02,172] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 2] 원본 텍스트: 'CMC 인증' [2025-12-01 23:42:02,172] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 2] 분리된 단어: ['CMC', '인증'] [2025-12-01 23:42:02,172] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 2] 변경 없음: 'CMC 인증' [2025-12-01 23:42:02,172] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 3] 원본 텍스트: 'CPA 자격증' [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 3] 분리된 단어: ['CPA', '자격증'] [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 3] 변경 없음: 'CPA 자격증' [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 4] 원본 텍스트: '국가 방폭형' [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 4] 분리된 단어: ['국가', '방폭형'] [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 4] 변경 없음: '국가 방폭형' [2025-12-01 23:42:02,173] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 5] 원본 텍스트: 'ISO 인증' [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 5] 분리된 단어: ['ISO', '인증'] [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 5] 변경 없음: 'ISO 인증' [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 6] 원본 텍스트: 'CE 인증' [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 6] 분리된 단어: ['CE', '인증'] [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 6] 변경 없음: 'CE 인증' [2025-12-01 23:42:02,174] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 7] 원본 텍스트: 'SGS 인증' [2025-12-01 23:42:02,175] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 7] 분리된 단어: ['SGS', '인증'] [2025-12-01 23:42:02,175] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 7] 변경 없음: 'SGS 인증' [2025-12-01 23:42:02,175] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 8] 원본 텍스트: '레이저 먼지 감지기' [2025-12-01 23:42:02,175] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 8] 분리된 단어: ['레이저', '먼지', '감지기'] [2025-12-01 23:42:02,175] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 8] 변경 없음: '레이저 먼지 감지기' [2025-12-01 23:42:02,176] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 9] 원본 텍스트: '정확도≤±5%F.S' [2025-12-01 23:42:02,176] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 9] 분리된 단어: ['정확도≤±5%F.S'] [2025-12-01 23:42:02,176] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 9] 변경 없음: '정확도≤±5%F.S' [2025-12-01 23:42:02,176] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 10] 원본 텍스트: '보호 수준:' [2025-12-01 23:42:02,176] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 10] 분리된 단어: ['보호', '수준:'] [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 10] 변경 없음: '보호 수준:' [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 11] 원본 텍스트: '과전압 보호 / 소리와 빛 경보 / 매장 인쇄' [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 11] 분리된 단어: ['과전압', '보호', '/', '소리와', '빛', '경보', '/', '매장', '인쇄'] [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 11] 변경 없음: '과전압 보호 / 소리와 빛 경보 / 매장 인쇄' [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 12] 원본 텍스트: '다양한 입자 크기의 먼지 입자 수를 동시에 모니터링 가능' [2025-12-01 23:42:02,177] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 12] 분리된 단어: ['다양한', '입자', '크기의', '먼지', '입자', '수를', '동시에', '모니터링', '가능'] [2025-12-01 23:42:02,178] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 12] 변경 없음: '다양한 입자 크기의 먼지 입자 수를 동시에 모니터링 가능' [2025-12-01 23:42:02,178] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 13] 원본 텍스트: '클래스 100,000 이상의 클린룸에 적합' [2025-12-01 23:42:02,178] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 13] 분리된 단어: ['클래스', '100,000', '이상의', '클린룸에', '적합'] [2025-12-01 23:42:02,178] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 13] 변경 없음: '클래스 100,000 이상의 클린룸에 적합' [2025-12-01 23:42:02,179] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 14] 원본 텍스트: '전국' [2025-12-01 23:42:02,179] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 14] 분리된 단어: ['전국'] [2025-12-01 23:42:02,179] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 14] 변경 없음: '전국' [2025-12-01 23:42:02,179] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 15] 원본 텍스트: '7일이면 반품할 이유가 없습니다.' [2025-12-01 23:42:02,179] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 15] 분리된 단어: ['7일이면', '반품할', '이유가', '없습니다.'] [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 15] 변경 없음: '7일이면 반품할 이유가 없습니다.' [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 16] 원본 텍스트: '무료 배송 보험' [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 16] 분리된 단어: ['무료', '배송', '보험'] [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 16] 변경 없음: '무료 배송 보험' [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 17] 원본 텍스트: '무료 배송' [2025-12-01 23:42:02,180] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 17] 분리된 단어: ['무료', '배송'] [2025-12-01 23:42:02,181] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 17] 변경 없음: '무료 배송' [2025-12-01 23:42:02,181] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1449] [치환 처리 18] 원본 텍스트: '오리지널 정품 / 청구 가능 / 1년 보증' [2025-12-01 23:42:02,181] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1453] [치환 처리 18] 분리된 단어: ['오리지널', '정품', '/', '청구', '가능', '/', '1년', '보증'] [2025-12-01 23:42:02,181] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1494] [치환 처리 18] 변경 없음: '오리지널 정품 / 청구 가능 / 1년 보증' [2025-12-01 23:42:02,182] [MainThread] [DEBUG] [image_processor3.py:process_translated_texts:1496] 전체 치환 결과: 18개 텍스트 처리 완료 [2025-12-01 23:42:02,182] [MainThread] [DEBUG] [image_processor3.py:process_single_image:758] 이미지 1 치환됨 [2025-12-01 23:42:02,184] [MainThread] [INFO] [image_processor3.py:process_single_image:795] [AUTO Inpaint] coverage=0.388, comps=8, min_center_dist=0.072 → external_request [2025-12-01 23:42:02,184] [MainThread] [DEBUG] [image_processor3.py:process_single_image:808] ocr_count: 18 [2025-12-01 23:42:02,184] [MainThread] [DEBUG] [image_processor3.py:process_single_image:809] is_member_valid: True [2025-12-01 23:42:02,184] [MainThread] [DEBUG] [image_processor3.py:process_single_image:813] 최종 inpaint_method: external_request [2025-12-01 23:42:02,190] [asyncio_1] [DEBUG] [image_processor3.py:_try_external_inpaint:1141] 외부 인페인팅 시도: https://inpaint.m1tcloud.cc [2025-12-01 23:42:02,672] [asyncio_1] [WARNING] [request_inpaint.py:request_external_inpaint:106] 외부 인페인팅 서버(https://inpaint.m1tcloud.cc)가 응답하지 않습니다. [2025-12-01 23:42:02,672] [asyncio_1] [WARNING] [image_processor3.py:execute_inpaint_with_fallback:1004] 외부 서버 인페인팅 실패 -> 로컬 MIGAN으로 폴백 [2025-12-01 23:42:02,672] [asyncio_1] [DEBUG] [image_processor3.py:_try_migan_inpaint:1153] MIGAN 모듈이 초기화되지 않아 건너뜀 [2025-12-01 23:42:02,672] [asyncio_1] [DEBUG] [image_processor3.py:execute_inpaint_with_fallback:1022] 인페인팅 폴백: OpenCV(Telea) 방식 시도 [2025-12-01 23:42:02,678] [asyncio_1] [DEBUG] [image_processor3.py:execute_inpaint_with_fallback:1067] OpenCV 인페인팅 성공 [2025-12-01 23:42:02,683] [asyncio_1] [INFO] [image_processor3.py:execute_inpaint_with_fallback:1080] 메모리 변화 [인페인팅]: 31942.3MB -> 31968.4MB (+26.1MB, +0.1%) - 방법: cv [2025-12-01 23:42:02,684] [MainThread] [DEBUG] [image_processor3.py:process_single_image:826] 인페인팅 완료 [2025-12-01 23:42:02,751] [MainThread] [DEBUG] [image_processor3.py:process_single_image:848] 텍스트 렌더링 완료 [2025-12-01 23:42:02,752] [MainThread] [DEBUG] [image_processor3.py:postProcess_and_save_image:1281] watermark_text: 이미지 저작권 보유 [2025-12-01 23:42:02,752] [MainThread] [DEBUG] [image_processor3.py:postProcess_and_save_image:1282] is_watermark_enabled: True [2025-12-01 23:42:02,753] [MainThread] [INFO] [postImageManager.py:save_image_to_path:101] 이미지 저장 완료 : D:\py\img_worker\modules\test\temp\translated_llm_test_result_img_1.jpg [2025-12-01 23:42:02,754] [MainThread] [DEBUG] [image_processor3.py:process_single_image:854] 이미지 1 번역 완료: D:\py\img_worker\modules\test\temp\translated_llm_test_result_img_1.jpg [2025-12-01 23:42:02,779] [MainThread] [DEBUG] [image_processor3.py:process_single_image:907] ⏱ 이미지 파이프라인 총 35230.2ms | download=0.0ms | ocr=670.2ms | translate=33404.0ms | mask=8.0ms | inpaint=498.1ms(cv/CPU) | render=67.7ms | save=2.0ms [2025-12-01 23:42:02,794] [MainThread] [DEBUG] [image_processor3.py:cleanup:450] OCR 모듈 정리 완료 [2025-12-01 23:42:02,794] [MainThread] [DEBUG] [image_processor3.py:cleanup:458] 마스크 모듈 정리 완료 [2025-12-01 23:42:02,818] [MainThread] [DEBUG] [image_processor3.py:cleanup:493] 임시 폴더 삭제됨: D:\py\img_worker\modules\test\temp [2025-12-01 23:42:02,835] [MainThread] [DEBUG] [image_processor3.py:cleanup:493] 임시 폴더 삭제됨: D:\py\img_worker\modules\test\temp [2025-12-01 23:42:02,835] [MainThread] [DEBUG] [image_processor3.py:__del__:441] 이미지 프로세서 소멸