SumanthKethe/legaldocumentanalyzer
0
1import os2import gradio as gr3from langchain.document_loaders import PyPDFLoader4from langchain.text_splitter import CharacterTextSplitter5from langchain.embeddings import OpenAIEmbeddings6from langchain.vectorstores import Chroma7from langchain.chat_models import ChatOpenAI8from langchain.chains import RetrievalQA9 10os.system('!pip install -r requirements.txt')11os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")12 13pdf_path = "Hindu Succession Act.pdf"14 15# Step 1: Load PDF and split into chunks16loader = PyPDFLoader(pdf_path)17docs = loader.load()18 19splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)20chunks = splitter.split_documents(docs)21 22ersist_directory = "chroma_db"23embedding = OpenAIEmbeddings()24 25# Check if db already exists (reuse)26if os.path.exists(persist_directory) and os.listdir(persist_directory):27 vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)28else:29 vectordb = Chroma.from_documents(chunks, embedding, persist_directory=persist_directory)30 vectordb.persist()31 32# Step 3: Build RAG chain33qa_chain = RetrievalQA.from_chain_type(34 llm=ChatOpenAI(temperature=0),35 chain_type="stuff",36 retriever=vectordb.as_retriever()37)38 39# Step 4: Gradio UI40def ask_rag(question):41 return qa_chain.run(question)42 43 from PIL import Image44import gradio as gr45def analyze_legal_image(image):46 # Mock analysis logic โ replace with actual OCR/model47 if image:48 return "This appears to be a legal document. Key elements might include:\n\n- Parties involved\n- Legal terms\n- Jurisdiction\n- Signatures\n\n(This is a placeholder result)"49 return "No image provided."50 51# Gradio UI52with gr.Blocks() as demo:53 gr.Markdown("## ๐๏ธ Karanataka Property Law AI Assistant ")54 gr.Markdown("Upload a legal document image (e.g. contract, affidavit, court notice) to analyze. [Coming Soon...]")55 gr.Markdown("---")56 gr.Markdown("**Developed by Sumanth Kethe**", elem_id="footer", elem_classes="text-center")57 gr.Interface(fn=ask_rag, inputs="text", outputs="text")58 #with gr.Row():59 # image_input = gr.Image(type="pil", label="Upload Legal Image")60 # analysis_output = gr.Textbox(label="Legal Analysis Output", lines=10)61 62 #analyze_btn = gr.Button("Analyze Document")63 # analyze_btn.click(fn=analyze_legal_image, inputs=image_input, outputs=analysis_output)64 65#interface = gr.Interface(fn=ask_rag, inputs="text", outputs="text", title="""๐๏ธ Karanataka Property Law AI Assistant66#**Developed by Sumanth Kethe**""", elem_id="footer", elem_classes="text-center")67 68demo.launch()69 