import gradio as gr import pandas as pd import easyocr from file_processing import FileProcessor from entity_recognition import process_text from utils import safe_dataframe reader = easyocr.Reader(['en'], gpu=True) # Initialize OCR model def extract_it(file): """Processes the uploaded file and extracts medical data.""" text = read_file(file.name, reader) # Read the file (implement `read_file`) print("Performing NER...") global output output = process_text(text) # Perform entity recognition (implement `process_text`) metadata = output["metadata"] metadata_str = f"**Patient Name:** {metadata['patient_name']}\n\n" \ f"**Age:** {metadata['age']} \n\n" \ f"**Gender:** {metadata['gender']}\n\n" \ f"**Lab Name:** {metadata['lab_name']}\n\n" \ f"**Report Date:** {metadata['report_date']}" print(f"Processed report for {metadata['patient_name']}") return metadata_str with gr.Blocks() as demo: gr.Markdown("# 🏥 Medical Lab Test Report Extracter") with gr.Row(): file_input = gr.File(label="📂 Upload Report") # submit_btn = gr.Button("Extract") # metadata_md = gr.Markdown("Report will show below....") # submit_btn.click(fn=extract_it,inputs=file_input,outputs=metadata_md) @gr.render(inputs=file_input,triggers=[file_input.upload]) def extract_it(file): """Processes the uploaded file and extracts medical data.""" text = read_file(file.name, reader) # Read the file (implement `read_file`) print("Performing NER...") output = process_text(text) # Perform entity recognition (implement `process_text`) metadata = output["metadata"] metadata_str = f"**Patient Name:** {metadata['patient_name']}\n\n" \ f"**Age:** {metadata['age']} \n\n" \ f"**Gender:** {metadata['gender']}\n\n" \ f"**Lab Name:** {metadata['lab_name']}\n\n" \ f"**Report Date:** {metadata['report_date']}" print(f"Processed report for {metadata['patient_name']}") metadata_md = gr.Markdown(metadata_str) for test in output["report"]: test_type = test["test_type"] lab_tests = safe_dataframe(test,"lab_tests") gr.Markdown(f"### 📊 Test : {test_type}") gr.Dataframe(lab_tests) gr.JSON(output,label="📜 Extracted Report") demo.launch(debug=True, share=True)