Spaces:
Sleeping
Sleeping
File size: 4,193 Bytes
d0b964d | 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | from os import write
from langchain.llms import OpenAI
from pypdf import PdfReader
from langchain.llms.openai import OpenAI
import pandas as pd
import re
import streamlit as st
from langchain.prompts import PromptTemplate
#Extract Information from PDF file
def get_pdf_text(pdf_doc):
text = ""
pdf_reader = PdfReader(pdf_doc)
for page in pdf_reader.pages:
text += page.extract_text()
return text
#Function to extract data from text
def extracted_data(pages_data):
template = """
Remove any $ symbols.
Extract the following values in a JSON format : Invoice,Date, Description, Quantity,
Unit Price , Amount, Total, Email and Phone Number from this data: {pages}.
"""
prompt_template = PromptTemplate(input_variables=["pages"], template=template)
llm = OpenAI(temperature=.7)
full_response=llm(prompt_template.format(pages=pages_data))
#print("Full Response")
#print(full_response)
return full_response
# iterate over files in
# that user uploaded PDF files, one by one
def create_docs(user_pdf_list):
df = pd.DataFrame({'Invoice': pd.Series(dtype='str'),
'Description': pd.Series(dtype='str'),
'Date': pd.Series(dtype='str'),
'Quantity': pd.Series(dtype='str'),
'Unit Price': pd.Series(dtype='str'),
'Amount': pd.Series(dtype='int'),
'Total': pd.Series(dtype='str'),
'Email': pd.Series(dtype='str'),
'Phone Number': pd.Series(dtype='str')
})
for filename in user_pdf_list:
print("filename")
print(filename)
raw_data=get_pdf_text(filename)
#st.write("RAWDATA:..."+raw_data)
#print("extracted raw data")
#print(raw_data)
llm_extracted_data=extracted_data(raw_data)
#st.write("LLMDATA..."+llm_extracted_data)
# Write code to append the extracted data to the dataframe
# df = df.append(llm_extracted_data, ignore_index=True)
#print("DF start")
# print(df)
print("llm extracted data")
#Adding items to our list - Adding data & its metadata
print(llm_extracted_data)
pattern = r'{(.+)}'
match = re.search(pattern, llm_extracted_data, re.DOTALL)
if match:
extracted_text = match.group(1)
# Escape quotes in the extracted text
#extracted_text = extracted_text.replace('"', '\\"').replace("'", "\\'")
# Converting the extracted text to a dictionary
# Remove line continuation characters
#extracted_text = extracted_text.replace('\\', '')
#print("********************Extracted Text***************")
#print(extracted_text)
#print("********************Data Dict***************")
data_dict = eval('{' + extracted_text + '}')
#print(data_dict)
#Convert data_dict to a dataframe
# df = pd.DataFrame.from_dict(data_dict, orient='index').T
#print("********************Data Dict End***************")
else:
print("No match found.")
data_dict = {}
#print("********************DF Final start***************")
df = pd.concat([df, pd.DataFrame([data_dict])], ignore_index=True)
#print(df)
#print("********************DF Final End***************")
#df = pd.concat([df, pd.DataFrame.from_dict(data_dict)])
#df= pd.concat([df, pd.DataFrame(data_dict, index=[0])], ignore_index=True)
#df = pd.concat([df, pd.DataFrame.from_dict(data_dict, orient='columns', index=[0])])
#df = pd.concat([df, pd.DataFrame({k: [v] for k, v in data_dict.items()})])
# Create a DataFrame from the dictionary
# If the dictionary values are not lists, convert them to lists
#df=df.append(save_to_dataframe(llm_extracted_data), ignore_index=True)
df.head()
return df |