Spaces:
Sleeping
Sleeping
import streamlit as st | |
import base64 | |
from groq import Groq | |
# Function to encode the image | |
def encode_image(image): | |
return base64.b64encode(image.read()).decode('utf-8') | |
# Function to extract ID card details from the image | |
def extract_id_details(image_url_or_file): | |
client = Groq() | |
# Check if the input is a file or a URL | |
if isinstance(image_url_or_file, str) and (image_url_or_file.startswith("http") or image_url_or_file.startswith("data:image")): | |
# If it's a URL or base64 string | |
url = image_url_or_file | |
else: | |
# If it's a file, encode it to base64 | |
url = f"data:image/jpeg;base64,{encode_image(image_url_or_file)}" | |
completion = client.chat.completions.create( | |
model="llama-3.2-90b-vision-preview", | |
messages=[ | |
{ | |
"role": "user", | |
"content": [ | |
{"type": "text", "text": "List all the details from the provided image of an ID card. Just list them in points. Don't give any other background descriptions."}, | |
{ | |
"type": "image_url", | |
"image_url": {"url": url} | |
}, | |
], | |
} | |
], | |
temperature=0.2, | |
max_completion_tokens=200, | |
top_p=0, | |
stream=False, | |
stop=None, | |
) | |
return completion.choices[0].message.content | |
# Streamlit app interface | |
st.title("ID Card OCR Extractor") | |
# Input for image URL or upload | |
image_url = st.text_input("Enter the image URL:") | |
uploaded_image = st.file_uploader("Or upload an image of an ID card", type=["jpg", "jpeg", "png"]) | |
if st.button("Extract Details"): | |
if image_url: | |
with st.spinner("Extracting details from the URL..."): | |
details = extract_id_details(image_url) # Use URL directly | |
st.subheader("Extracted Details:") | |
st.write(details) | |
elif uploaded_image: | |
with st.spinner("Extracting details from the uploaded image..."): | |
# Pass the uploaded image directly to the function | |
details = extract_id_details(uploaded_image) # File uploaded | |
st.subheader("Extracted Details:") | |
st.write(details) | |
else: | |
st.warning("Please provide either a valid image URL or upload an image.") | |