Spaces:
Running on Zero
Running on Zero
Update vision_engine.py
Browse files- vision_engine.py +8 -6
vision_engine.py
CHANGED
|
@@ -5,12 +5,16 @@ from PIL import Image
|
|
| 5 |
import torch
|
| 6 |
from transformers import LayoutLMv3ForTokenClassification, AutoProcessor
|
| 7 |
from pdf2image import convert_from_bytes
|
|
|
|
| 8 |
|
| 9 |
-
# Hugging Face से
|
| 10 |
MODEL_NAME = "microsoft/layoutlmv3-base"
|
| 11 |
|
| 12 |
-
@
|
| 13 |
def load_vision_processor_and_model():
|
|
|
|
|
|
|
|
|
|
| 14 |
try:
|
| 15 |
processor = AutoProcessor.from_pretrained(MODEL_NAME, apply_ocr=True)
|
| 16 |
model = LayoutLMv3ForTokenClassification.from_pretrained(MODEL_NAME)
|
|
@@ -22,7 +26,7 @@ def load_vision_processor_and_model():
|
|
| 22 |
def extract_value_with_vision_layout(pdf_bytes, target_keyword):
|
| 23 |
"""
|
| 24 |
यह फंक्शन पीडीएफ को विजुअल इमेज में बदलकर LayoutLMv3 मॉडल के जरिए
|
| 25 |
-
कीवर्ड और उसके आस-पास के लेआउट को प
|
| 26 |
"""
|
| 27 |
if not pdf_bytes:
|
| 28 |
return None
|
|
@@ -37,7 +41,6 @@ def extract_value_with_vision_layout(pdf_bytes, target_keyword):
|
|
| 37 |
# 2. Processor और Model लोड करना
|
| 38 |
processor, model = load_vision_processor_and_model()
|
| 39 |
if not processor or not model:
|
| 40 |
-
# Fallback यदि मॉडल लोड होने में कोई नेटवर्क/रिसोर्स इशू आए
|
| 41 |
return None
|
| 42 |
|
| 43 |
# 3. इमेज और टेक्स्ट को मॉडल के अनुकूल तैयार करना
|
|
@@ -58,5 +61,4 @@ def extract_value_with_vision_layout(pdf_bytes, target_keyword):
|
|
| 58 |
return extracted_result.strip() if extracted_result else None
|
| 59 |
|
| 60 |
except Exception as ex:
|
| 61 |
-
|
| 62 |
-
return None
|
|
|
|
| 5 |
import torch
|
| 6 |
from transformers import LayoutLMv3ForTokenClassification, AutoProcessor
|
| 7 |
from pdf2image import convert_from_bytes
|
| 8 |
+
from functools import lru_cache
|
| 9 |
|
| 10 |
+
# Hugging Face से विजन-डॉक्यूमेंट मॉडल लोड करने का कॉन्फिगरेशन
|
| 11 |
MODEL_NAME = "microsoft/layoutlmv3-base"
|
| 12 |
|
| 13 |
+
@lru_cache(maxsize=1)
|
| 14 |
def load_vision_processor_and_model():
|
| 15 |
+
"""
|
| 16 |
+
Model aur processor ko memory me cache karta hai taaki baar-baar load na karna pade.
|
| 17 |
+
"""
|
| 18 |
try:
|
| 19 |
processor = AutoProcessor.from_pretrained(MODEL_NAME, apply_ocr=True)
|
| 20 |
model = LayoutLMv3ForTokenClassification.from_pretrained(MODEL_NAME)
|
|
|
|
| 26 |
def extract_value_with_vision_layout(pdf_bytes, target_keyword):
|
| 27 |
"""
|
| 28 |
यह फंक्शन पीडीएफ को विजुअल इमेज में बदलकर LayoutLMv3 मॉडल के जरिए
|
| 29 |
+
कीवर्ड और उसके आस-पास के लेआउट को पढ़कर सही वैल्यू एक्सट्रैक्ट करता है।
|
| 30 |
"""
|
| 31 |
if not pdf_bytes:
|
| 32 |
return None
|
|
|
|
| 41 |
# 2. Processor और Model लोड करना
|
| 42 |
processor, model = load_vision_processor_and_model()
|
| 43 |
if not processor or not model:
|
|
|
|
| 44 |
return None
|
| 45 |
|
| 46 |
# 3. इमेज और टेक्स्ट को मॉडल के अनुकूल तैयार करना
|
|
|
|
| 61 |
return extracted_result.strip() if extracted_result else None
|
| 62 |
|
| 63 |
except Exception as ex:
|
| 64 |
+
return None
|
|
|