|
from transformers import LayoutLMForTokenClassification, LayoutLMTokenizer |
|
import gradio as gr |
|
import cv2 |
|
import easyocr |
|
from simple_salesforce import Salesforce |
|
|
|
|
|
Salesforce_User_Name = '[email protected]' |
|
Salesforce_Password = 'Sathkrutha@06' |
|
SALESFORCE_INSTANCE_URL = 'https://sathkruthatechsolutions63-dev-ed.develop.lightning.force.com' |
|
SALESFORCE_ACCESS_TOKEN = 'UnByPih7PWmoWLzRuRyFrXzw' |
|
|
|
|
|
reader = easyocr.Reader(['en']) |
|
|
|
|
|
model = LayoutLMForTokenClassification.from_pretrained("microsoft/layoutlm-large-uncased") |
|
tokenizer = LayoutLMTokenizer.from_pretrained("microsoft/layoutlm-large-uncased") |
|
|
|
|
|
sf = Salesforce(username=Salesforce_User_Name, password=Salesforce_Password, security_token=SALESFORCE_ACCESS_TOKEN) |
|
|
|
|
|
def extract_patient_info(image): |
|
|
|
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) |
|
|
|
|
|
result = reader.readtext(image_rgb) |
|
extracted_text = " ".join([detection[1] for detection in result]) |
|
|
|
|
|
inputs = tokenizer(extracted_text, return_tensors="pt") |
|
outputs = model(**inputs) |
|
|
|
|
|
details = extract_details_from_text(extracted_text) |
|
|
|
|
|
create_salesforce_record(details) |
|
|
|
|
|
return extracted_text |
|
|
|
|
|
def extract_details_from_text(extracted_text): |
|
|
|
details = {} |
|
details['Name'] = "Shanthi" |
|
details['Age'] = "39" |
|
details['Gender'] = "Female" |
|
details['Phone Number'] = "9955337097" |
|
|
|
return details |
|
|
|
|
|
def create_salesforce_record(details): |
|
data = { |
|
'Name__c': details['Name'], |
|
'Age__c': int(details['Age']), |
|
'Gender__c': details['Gender'], |
|
'Phone_Number__c': details['Phone Number'] |
|
} |
|
|
|
|
|
sf.Patient_Registration__c.create(data) |
|
print("Salesforce record created successfully!") |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("### OCR Using LayoutLM Pretrained Model with EasyOCR and Salesforce Integration") |
|
|
|
|
|
image_input = gr.Image(type="numpy", label="Upload Image") |
|
|
|
|
|
output_text = gr.Textbox(label="Extracted Text") |
|
|
|
|
|
process_button = gr.Button("Process Image") |
|
|
|
|
|
process_button.click(fn=extract_patient_info, inputs=image_input, outputs=output_text) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|