CoolFace
Apppublic

edmbdk/crew

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes
streamlit_app.py81 linesDownload Raw Back to src
1import streamlit as st2import pandas as pd3from PIL import Image4import google.generativeai as genai5import io6import json7 8# Sayfa Ayarları (Mobil ve Performans Odaklı)9st.set_page_config(page_title="Hızlı Belge Okuyucu AI", layout="centered")10 11# Görsel yükleme motorunu HTML üzerinden tamamen özgür bırakıyoruz (403 hatasını engeller)12st.markdown(13    """14    <style>15    .stFileUploader { max-width: 100%; }16    section[data-testid="stSidebar"] { display: none; }17    </style>18    """, 19    unsafe_allow_html=True20)21 22st.title("📄 Akıllı Belge Okuyucu (AI)")23st.write("Fotoğraf çekin veya yükleyin. Boyut ne olursa olsun otomatik işlenecektir.")24 25# Şifre Tanımlaması26GOOGLE_API_KEY = "AQ.Ab8RN6KTwx-oAvwkJrfB0zHcZliFTXUDvVVZeOmLCO_pvmZpcA"27genai.configure(api_key=GOOGLE_API_KEY)28 29# Telefon kameraları için tür kısıtlamasını tamamen kaldırıyoruz30uploaded_file = st.file_uploader("Belge Fotoğrafı Yükle veya Çek...", type=None, accept_multiple_files=False)31 32if uploaded_file is not None:33    try:34        # 403 hatasını aşmak için dosyayı diske yazmadan direkt binary (bytes) olarak RAM'e alıyoruz35        file_bytes = uploaded_file.getvalue()36        image = Image.open(io.BytesIO(file_bytes))37        38        # Ekranda resmi güvenli modda gösteriyoruz39        st.image(image, caption="Yüklendi", use_container_width=True)40        41        if st.button("🚀 Belgeyi Çözümle ve Excel Yap"):42            with st.spinner("Yapay zeka tabloyu inceliyor..."):43                model = genai.GenerativeModel('gemini-2.5-flash')44                45                prompt = """46                Bu belgedeki tüm kişi listesini/tablosunu bul. 47                Her kişinin 'Soyisim (Surname)' ve 'İsim (Name)' bilgilerini ayıkla.48                Sonucu sadece ve sadece şu JSON formatında döndür, başka hiçbir açıklama yazma:49                [50                  {"Soyisim": "YILMAZ", "İsim": "AHMET"},51                  {"Soyisim": "DEMIR", "İsim": "MEHMET ENES"}52                ]53                """54                55                response = model.generate_content([prompt, image])56                57                cleaned_text = response.text.replace("```json", "").replace("```", "").strip()58                data = json.loads(cleaned_text)59                60                if data:61                    df = pd.DataFrame(data)62                    st.success(f"Başarılı! {len(df)} kişi bulundu.")63                    st.dataframe(df, use_container_width=True)64                    65                    output = io.BytesIO()66                    with pd.ExcelWriter(output, engine='xlsxwriter') as writer:67                        df.to_excel(writer, index=False, sheet_name='İsim Listesi')68                    processed_data = output.getvalue()69                    70                    st.download_button(71                        label="📥 Excel Dosyasını Telefonuna İndir",72                        data=processed_data,73                        file_name="belgeden_gelen_isimler.xlsx",74                        mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"75                    )76                else:77                    st.warning("Belgede isim listesi tespit edilemedi.")78                    79    except Exception as e:80        st.error(f"Sistemsel bir sınır aşımı oldu. Lütfen fotoğrafı telefonunuzdan kırparak (sadece tablo kalacak şekilde) yüklemeyi deneyin.")81