import gradio as gr
import torch
from transformers import LayoutLMv3Processor, LayoutLMv3ForQuestionAnswering


##这个模型的示例存在问题，无法运行

def inference(img):
    pretrained_model_path = "layoutlmv3-base-mpdocvqa"
    processor = LayoutLMv3Processor.from_pretrained(pretrained_model_path, apply_ocr=False)
    model = LayoutLMv3ForQuestionAnswering.from_pretrained(pretrained_model_path)

    image = img.convert("RGB")
    question = "Is this a question?"
    context = ["Example"]
    boxes = [0, 0, 1000, 1000]  # This is an example bounding box covering the whole image.
    document_encoding = processor(image, question, context, boxes=boxes, return_tensors="pt")
    outputs = model(**document_encoding)

    # Get the answer
    start_idx = torch.argmax(outputs.start_logits, axis=1)
    end_idx = torch.argmax(outputs.end_logits, axis=1)
    answers = processor.tokenizer.decode(input_tokens[start_idx: end_idx + 1]).strip()
    return answers



title = "layoutlmv3-base-mpdocvqa"
description = "Gradio Demo for layoutlmv3-base-mpdocvqa. To use it, simply upload your image, or click one of the examples to load them."
article = "<p style='text-align: center'><a href='https://github.com/bryandlee/animegan2-pytorch' target='_blank'>Github Repo Pytorch</a></p> <center><img src='https://visitor-badge.glitch.me/badge?page_id=akhaliq_animegan' alt='visitor badge'></center></p>"
examples = [['example_cat.jpg'], ['Masahiro.png']]

demo = gr.Interface(
    fn=inference,
    inputs=[gr.inputs.Image(type="pil")],
    outputs=gr.outputs.Textbox(),
    title=title,
    description=description,
    article=article,
    examples=examples)

demo.launch()
