from paddleocr import PaddleOCR
import cv2
import os

print("Loading PaddleOCR...")

ocr = PaddleOCR(
    use_angle_cls=True,
    lang="en"
)

print("OCR Ready")
print()

files = [
    "hasil_stack/001_NamaBarang.jpg",
    "hasil_stack/002_NamaBarang.jpg",
    "hasil_stack/003_NamaBarang.jpg",
    "hasil_stack/004_NamaBarang.jpg",
    "hasil_stack/005_NamaBarang.jpg"
]

os.makedirs(
    "hasil_blue",
    exist_ok=True
)

for fn in files:

    print("=" * 60)
    print(fn)

    img = cv2.imread(fn)

    if img is None:

        print("Gagal load")
        continue

    # ==========================
    # Ambil channel biru
    # ==========================

    blue = img[:, :, 0]

    # ==========================
    # Perbesar 4x
    # ==========================

    blue = cv2.resize(
        blue,
        None,
        fx=4,
        fy=4,
        interpolation=cv2.INTER_CUBIC
    )

    # ==========================
    # Adaptive Threshold
    # ==========================

    th = cv2.adaptiveThreshold(
        blue,
        255,
        cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
        cv2.THRESH_BINARY,
        31,
        15
    )

    # ==========================
    # Simpan hasil
    # ==========================

    out_file = (
        "hasil_blue\\" +
        os.path.basename(fn)
    )

    cv2.imwrite(
        out_file,
        th
    )

    # ==========================
    # OCR
    # ==========================

    result = ocr.ocr(out_file)

    if (
        result is None or
        len(result) == 0 or
        result[0] is None
    ):

        print("Tidak terbaca")
        continue

    found = False

    for line in result[0]:

        try:

            text = line[1][0]
            conf = line[1][1]

            print(
                f"{conf:.2f}  {text}"
            )

            found = True

        except:

            pass

    if not found:

        print("Tidak terbaca")

print()
print("SELESAI")