| import gradio as gr |
| from gradio_pdf import PDF |
| from pdf2image import convert_from_path |
| from transformers import pipeline |
| from pathlib import Path |
|
|
| dir_ = Path(__file__).parent |
|
|
| p = pipeline( |
| "document-question-answering", |
| model="impira/layoutlm-document-qa", |
| ) |
|
|
| def qa(question: str, doc: str) -> str: |
| img = convert_from_path(doc)[0] |
| output = p(img, question) |
| return sorted(output, key=lambda x: x["score"], reverse=True)[0]['answer'] |
|
|
|
|
| demo = gr.Interface( |
| qa, |
| [gr.Textbox(label="Question"), PDF(label="Document")], |
| gr.Textbox(), |
| examples=[["What is the total gross worth?", str(dir_ / "invoice_2.pdf")], |
| ["Whos is being invoiced?", str(dir_ / "sample_invoice.pdf")]] |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |