noumanjavaid's picture
Update app.py
03250e1 verified
import os
import requests
import streamlit as st
# Streamlit app setup
st.title('Llama Cloud API Document Extraction')
# File Upload
uploaded_file = st.file_uploader('Choose a PDF file', type='pdf')
api_key = os.getenv('API_KEY')
if uploaded_file is not None:
# Upload file to Llama Cloud
headers = {
'accept': 'application/json',
'Authorization': f'Bearer {api_key}'
}
files = {'upload_file': (uploaded_file.name, uploaded_file, 'application/pdf')}
response = requests.post('https://api.cloud.llamaindex.ai/api/v1/files', headers=headers, files=files)
file_id = response.json().get('id')
st.write(f'File uploaded with ID: {file_id}')
# Infer Schema
schema_data = {
'name': 'Inferred Schema',
'file_ids': [file_id]
}
schema_response = requests.post('https://api.cloud.llamaindex.ai/api/v1/extraction/schemas/infer', headers=headers, json=schema_data)
schema_id = schema_response.json().get('id')
st.write(f'Schema inferred with ID: {schema_id}')
# Start Extraction Job
job_data = {
'schema_id': schema_id,
'file_id': file_id
}
job_response = requests.post('https://api.cloud.llamaindex.ai/api/v1/extraction/jobs', headers=headers, json=job_data)
job_id = job_response.json().get('id')
st.write(f'Extraction job started with ID: {job_id}')
# Check Job Status
status_response = requests.get(f'https://api.cloud.llamaindex.ai/api/v1/extraction/jobs/{job_id}', headers=headers)
status = status_response.json().get('status')
st.write(f'Job Status: {status}')
# Display Results
if status == 'completed':
results_response = requests.get(f'https://api.cloud.llamaindex.ai/api/v1/extraction/jobs/{job_id}/result', headers=headers)
results = results_response.json()
st.write('### Extraction Results:')
st.json(results)
else:
st.write('Extraction job is still in progress or has failed.')