Spaces:
Sleeping
Sleeping
import gradio as gr | |
import openvino as ov | |
from pathlib import Path | |
import numpy as np | |
from PIL import Image | |
import cv2 | |
from src.config import ( | |
DICT_DIR, | |
IMAGE_TYPES, | |
IMAGE_EXAMPLE, | |
MODEL_DIR, | |
DEVICE, | |
) | |
from src.image_processing import recognize | |
# Load models | |
core = ov.Core() | |
model = core.read_model(model=Path(MODEL_DIR)) | |
print("[INFO] Loaded recognition model") | |
# Select device (CPU or GPU) | |
compiled_model = core.compile_model(model=model, device_name=DEVICE) | |
# Fetch Information About Input and Output Layers | |
recognition_input_layer = compiled_model.input(0) | |
recognition_output_layer = compiled_model.output(0) | |
print("[INFO] Fetched recognition model") | |
# In JA model, there should be blank symbol added at index 0 of each charlist. | |
blank_char = "~" | |
with Path(DICT_DIR).open(mode="r", encoding="utf-8") as charlist: | |
letters = blank_char + "".join(line.strip() for line in charlist) | |
print("[INFO] Loaded dictionary") | |
def do_ocr(inp): | |
#img = Image.open(inp).convert('L') | |
#img = np.array(img) | |
print(f"input: {inp}") | |
print(type(inp)) | |
#img = cv2.imread(inp, cv2.IMREAD_GRAYSCALE) | |
img = cv2.cvtColor(inp, cv2.COLOR_BGR2GRAY) | |
recognized_text = recognize(img, | |
compiled_model, | |
recognition_input_layer, | |
recognition_output_layer, | |
letters, | |
) | |
return "".join(recognized_text) | |
input = gr.Image() | |
output = gr.Textbox() | |
title = "日本語手書き認識" | |
description = "DEMO by TOKYO TECHIES (注意:画像には1行のテキストしか含まれていません。)" | |
examples=[['data/in_1.png'],['data/sample_1_1.png']] | |
gr.Interface(fn=do_ocr, | |
inputs=input, | |
outputs=output, | |
title=title, | |
description=description, | |
examples=examples).launch() | |