wuwa-dev-ocr / ocr_service.py
system's picture
system HF Staff
Deploy OCR from GitHub 934a28b
be754f2 verified
Raw
History Blame Contribute Delete
1.25 kB
import logging
from fastapi import UploadFile
from image_processing import (
encode_jpeg_base64,
load_rgb_image,
preprocess_image,
to_ocr_array,
)
from ocr_config import normalize_lang
from ocr_engine import get_ocr
logger = logging.getLogger(__name__)
async def run_ocr(file: UploadFile, lang: str | None):
safe_lang = normalize_lang(lang)
ocr_engine = get_ocr(safe_lang)
contents = await file.read()
image = load_rgb_image(contents)
processed = preprocess_image(image)
encoded_image = encode_jpeg_base64(processed)
np_img = to_ocr_array(processed)
logger.info("Running OCR for lang=%s...", safe_lang)
results = ocr_engine.ocr(np_img, cls=True)
texts = extract_texts(results)
logger.info("Found %s text regions for lang=%s.", len(texts), safe_lang)
logger.info("OCR raw result: %s", results)
return {
"success": True,
"lang": safe_lang,
"texts": texts,
"full_text": "\n".join(texts),
"image_base64": encoded_image,
}
def extract_texts(results):
texts = []
if results and results[0]:
for line in results[0]:
if line and len(line) > 1:
texts.append(line[1][0])
return texts