File size: 2,246 Bytes
7779972 898d076 f6f5a9a 7779972 1b20694 4f7c634 7779972 f6f5a9a 898d076 f6f5a9a 6d2b657 898d076 f6f5a9a 7779972 6d2b657 f6f5a9a 4f7c634 6087673 f6f5a9a 6087673 f6f5a9a 7779972 4f7c634 f6f5a9a 4f7c634 898d076 f6f5a9a 7779972 f6f5a9a 6087673 7779972 f6f5a9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import gradio as gr
import pandas as pd
import easyocr
from paddleocr import PaddleOCR
from file_processing import read_file
from entity_recognition import process_text
from utils import safe_dataframe
# Initialize PaddleOCR globally (CPU mode)
reader = PaddleOCR(use_angle_cls=True, lang="en")
# reader = easyocr.Reader(['en'],download_enabled=True, gpu=True) # Initialize OCR model
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",visible=False)
welcome_msg=gr.Markdown("# Please Upload any lab report file π and the processing will start automatically ")
def invisible():
return gr.update(visible=False)
file_input.upload(invisible,outputs=welcome_msg,api_name=False)
@gr.render(inputs=file_input,triggers=[file_input.upload])
def extract(file):
"""Processes the uploaded file and extracts medical data."""
# welcome_msg.update(visible=False)
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")
return output
output_JSON=gr.JSON(visible=False)
submit_btn.click(extract,inputs=file_input,outputs=output_JSON,api_name="extract_report")
demo.launch(debug=True, share=True) |