docuverify-test / app.py
Krrish-shetty's picture
Update app.py
3c5fe7f verified
Raw
History Blame Contribute Delete
2.25 kB
import streamlit as st
import PyPDF2
from PIL import Image
import io
# Set up the title of the app
st.title("Docuverify - An app to check if the document is legit or forged")
# File uploader widget
uploaded_file = st.file_uploader("Upload a PDF or Image file", type=["pdf", "jpg", "jpeg", "png", "gif"])
def analyze_pdf(file):
try:
reader = PyPDF2.PdfReader(file)
info = reader.metadata
if info is None or not info:
st.write("PDF Metadata: None found.")
return "Forged (No metadata detected)"
st.write("PDF Metadata:")
for key, value in info.items():
st.write(f"{key}: {value}")
# Simple legitimacy heuristic
if info.get('/Producer') and info.get('/CreationDate'):
return "Legit"
else:
return "Forged (Missing key metadata fields)"
except Exception as e:
st.write(f"Error analyzing PDF: {str(e)}")
return "Forged (Error reading PDF)"
def analyze_image(file):
try:
img = Image.open(file)
st.write("Image Metadata:")
st.write(f"Format: {img.format}")
st.write(f"Size: {img.size}")
st.write(f"Mode: {img.mode}")
# Simple legitimacy heuristic
if img.format and img.size and img.mode:
return "Legit"
else:
return "Forged (Incomplete metadata)"
except Exception as e:
st.write(f"Error analyzing image: {str(e)}")
return "Forged (Error reading image)"
# Main logic to analyze the uploaded file
if uploaded_file is not None:
file_extension = uploaded_file.name.split(".")[-1].lower()
# Analyzing PDF file
if file_extension == "pdf":
st.write("Analyzing PDF file...")
status = analyze_pdf(uploaded_file)
st.write(f"Status: {status}")
# Analyzing Image file
elif file_extension in ["jpg", "jpeg", "png", "gif"]:
st.write("Analyzing Image file...")
status = analyze_image(uploaded_file)
st.write(f"Status: {status}")
# Unsupported file format
else:
st.write("Unsupported file format.")
else:
st.write("Please upload a PDF or Image file to analyze.")