CoolFace
Apppublic

SumanthKethe/legaldocumentanalyzer

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
app.py69 linesDownload Raw Back to root
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