File size: 2,404 Bytes
a84c47e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
import sys
import json
import cv2
import numpy as np
from PIL import Image

# Ensure paths are correct
PROJECT_ROOT = r"c:\Users\Varshith Dharmaj\Downloads\major\math_verification_mvp"
if PROJECT_ROOT not in sys.path:
    sys.path.insert(0, PROJECT_ROOT)

local_ocr_path = os.path.join(PROJECT_ROOT, "services", "local_ocr")
if local_ocr_path not in sys.path:
    sys.path.append(local_ocr_path)

from mvm2_ocr_engine import MVM2OCREngine

def run_diagnostics():
    print("MVM2 OCR DIAGNOSTIC TOOL")
    print("========================")
    
    engine = MVM2OCREngine()
    print(f"Engine Model Loaded: {engine.model_loaded}")
    
    test_images = [
        "test_math.png",
        "services/dashboard/test_math.png" # Sometimes it's duplicated
    ]
    
    # Create a synthetic complex math image if others don't exist
    synth_path = "synth_math.png"
    img = Image.new('RGB', (800, 200), color = 'white')
    # Since I can't draw complex LaTeX easily here, I'll just check if existing ones work
    # But I can generate an image with text via CV2
    synth_img = np.ones((200, 800, 3), dtype=np.uint8) * 255
    cv2.putText(synth_img, "f(x) = x^2 + 2x + 1", (50, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 0), 3)
    cv2.imwrite(synth_path, synth_img)
    test_images.append(synth_path)

    from services.preprocessing_service.image_enhancing import ImageEnhancer
    enhancer = ImageEnhancer(sigma=1.2)

    for img_path in test_images:
        abs_path = os.path.abspath(img_path)
        if not os.path.exists(abs_path):
            print(f"\n[SKIP] {img_path} not found.")
            continue
            
        print(f"\n[TESTING RAW] {img_path}")
        result_raw = engine.process_image(abs_path)
        print(f"Raw Result: {result_raw.get('latex_output')}")
        
        print(f"\n[TESTING ENHANCED] {img_path}")
        try:
            enhanced_img, _ = enhancer.enhance(abs_path)
            enhanced_tmp = f"enhanced_{os.path.basename(img_path)}"
            cv2.imwrite(enhanced_tmp, enhanced_img)
            result_enh = engine.process_image(enhanced_tmp)
            print(f"Enhanced Result: {result_enh.get('latex_output')}")
            os.remove(enhanced_tmp)
        except Exception as e:
            print(f"Enhancement failed: {e}")

if __name__ == "__main__":
    run_diagnostics()