from fastapi import FastAPI, UploadFile, File, Form, HTTPException from fastapi.responses import HTMLResponse from fastapi.middleware.cors import CORSMiddleware import easyocr import numpy as np from PIL import Image import io # 1. Khởi tạo FastAPI app = FastAPI(title="EasyOCR Đa Ngôn Ngữ API") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 2. Khởi tạo 2 mô hình EasyOCR chạy song song (Chỉ tải 1 lần) print("Đang tải các mô hình EasyOCR vào RAM (Sẽ mất thêm chút thời gian cho lần đầu)...") print("- Đang nạp mô hình: Tiếng Việt + Tiếng Anh...") reader_vi = easyocr.Reader(['vi', 'en'], gpu=False) print("- Đang nạp mô hình: Tiếng Trung (Giản thể) + Tiếng Anh...") reader_zh = easyocr.Reader(['ch_sim', 'en'], gpu=False) # Lưu ý: Nếu muốn đọc Tiếng Trung Phồn thể (Đài Loan, HK), bạn đổi 'ch_sim' thành 'ch_tra' nhé. print("Tải mô hình hoàn tất, sẵn sàng phục vụ!") # ----------------------------------------------------- # ROUTE 1: Giao diện Web # ----------------------------------------------------- @app.get("/", response_class=HTMLResponse) async def serve_frontend(): try: with open("index.html", "r", encoding="utf-8") as f: return f.read() except FileNotFoundError: return "