omr-app / screen /screen_scan.py
mertbozkurt's picture
new update
97b3ea8
raw
history blame
3.09 kB
import csv
import streamlit as st
import numpy as np
import cv2
from PIL import Image
import optic1
from functions import image_show
import pandas as pd
from data_func import make_new_data,update,save_and_push
import os
from huggingface_hub import Repository
def pull_read(DATASET_REPO_URL,HF_TOKEN,DATA_FILE):
repo = Repository(
local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN
)
with open(DATA_FILE) as csvfile:
df = pd.read_csv(csvfile)
df = pd.DataFrame(df)
return repo, df
@st.cache
def convert_df_to_csv(df):
# IMPORTANT: Cache the conversion to prevent computation on every rerun
return df.to_csv().encode('utf-8')
def screen_scan_main():
st.title("Optik Okuma")
teacher_code = st.text_input("Ogretmen kodu:",key=12)
exam_code = st.text_input("Sınav Kodu:",key=13,value=10)
exam_code = int(exam_code)
teacher_code = str(teacher_code)
DATA_FILENAME = f"{teacher_code}.csv"
DATA_FILENAME = str(DATA_FILENAME)
image_file = st.file_uploader(
"Upload image for testing", type=['jpeg', 'png', 'jpg', 'webp'])
if image_file != None:
if st.button("Process"):
repo, repo_df = pull_read(DATASET_REPO_URL = "https://huggingface.co/datasets/mertbozkurt/school_data",
DATA_FILE = os.path.join("data", DATA_FILENAME),
HF_TOKEN = "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")
repo.git_pull()
image = Image.open(image_file)
image = np.array(image.convert('RGB'))
#(ans_txt,pathImage, save_images= True)
grading, wrong_ans, student_idFix, resim_list =optic1.optic1(ans_txt1="cevapanahtari/cevapanahtari_ders1.txt",
ans_txt2="cevapanahtari/cevapanahtari_ders2.txt",
ans_txt3="cevapanahtari/cevapanahtari_ders3.txt",
pathImage=image,save_images=False)
image_show(resim_list)
st.write("Notu:",grading[0])
st.write("Yanlis Yaptigi sorular:",wrong_ans[0])
st.write("Ogrenci Numarasi:",student_idFix)
new_data = make_new_data(sinav_kodu=exam_code, ogrenci_no=int(student_idFix),
notu=grading[0],yanlislar=wrong_ans[0])
st.dataframe(new_data)
updated = update(new_data=new_data,ex_df=repo_df)
st.dataframe(updated,use_container_width=True)
save_and_push(dataFrame=updated,repo=repo,fileName=f"data/{DATA_FILENAME}")
st.download_button(label="Download data as CSV",data=convert_df_to_csv(updated),
file_name='large_df.csv',mime='text/csv',)
#python -m streamlit run app.py
if __name__ == '__main__':
screen_scan_main()