|
|
import gradio as gr |
|
|
from paddleocr import PaddleOCR |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
|
|
|
|
|
ocr = PaddleOCR(use_angle_cls=True, lang='en') |
|
|
|
|
|
|
|
|
model_name = "EleutherAI/gpt-neox-20b" |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
|
model = AutoModelForCausalLM.from_pretrained(model_name) |
|
|
|
|
|
def ocr_and_correct(text): |
|
|
|
|
|
inputs = tokenizer(text, return_tensors="pt") |
|
|
outputs = model.generate(**inputs) |
|
|
corrected_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
|
return corrected_text |
|
|
|
|
|
def process_image(image): |
|
|
|
|
|
result = ocr.ocr(image, cls=True) |
|
|
|
|
|
|
|
|
extracted_text = " ".join([line[1][0] for line in result]) |
|
|
|
|
|
|
|
|
corrected_text = ocr_and_correct(extracted_text) |
|
|
|
|
|
return corrected_text |
|
|
|
|
|
|
|
|
iface = gr.Interface(fn=process_image, inputs="image", outputs="text") |
|
|
|
|
|
iface.launch() |
|
|
|