Update app.py
Browse files
app.py
CHANGED
@@ -46,43 +46,30 @@ characters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
|
46 |
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
|
47 |
|
48 |
|
49 |
-
#
|
50 |
def prepare_image(img):
|
51 |
-
# Resize gambar
|
52 |
-
img = img.resize((img_width, img_height))
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
img_array = np.transpose(img_array, (0, 2, 1, 3)) # Mengubah urutan dimensi menjadi (1, 200, 50, 1)
|
60 |
-
|
61 |
-
# Menyusun input_length dan label_length untuk model OCR
|
62 |
-
input_length = np.ones((img_array.shape[0], 1)) * (img_width // 4) # Sesuaikan dengan input panjang
|
63 |
-
label_length = np.ones((img_array.shape[0], 1)) * max_length # Example label length
|
64 |
-
|
65 |
-
# Menambahkan input dummy untuk label (jika perlu untuk prediksi)
|
66 |
-
dummy_label = np.zeros((img_array.shape[0], max_length)) # Input dummy jika model mengharapkan label input
|
67 |
-
|
68 |
-
# Melakukan prediksi
|
69 |
-
preds = model.predict([img_array, input_length, label_length, dummy_label]) # Berikan 4 input
|
70 |
-
pred_texts = decode_batch_predictions(preds)
|
71 |
-
|
72 |
-
return pred_texts, preds
|
73 |
|
74 |
def decode_batch_predictions(pred):
|
75 |
pred_texts = []
|
76 |
|
77 |
-
# Loop untuk setiap
|
78 |
for i in range(pred.shape[0]):
|
79 |
-
#
|
80 |
-
pred_indices = np.argmax(pred[i], axis=-1) #
|
81 |
|
82 |
-
#
|
83 |
-
pred_text = ''.join([characters[int(c)] for c in pred_indices if c
|
84 |
|
85 |
-
|
|
|
86 |
|
87 |
return pred_texts
|
88 |
|
|
|
46 |
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
|
47 |
|
48 |
|
49 |
+
# Preprocessing gambar untuk memastikan bahwa gambar sesuai dengan input yang diinginkan
|
50 |
def prepare_image(img):
|
51 |
+
# Resize gambar ke ukuran yang diinginkan
|
52 |
+
img = img.resize((img_width, img_height))
|
53 |
+
# Konversi ke array dan normalisasi gambar
|
54 |
+
img_array = img_to_array(img) / 255.0 # Normalisasi
|
55 |
+
# Tambahkan dimensi batch dan sesuaikan dengan dimensi yang diinginkan model
|
56 |
+
img_array = np.expand_dims(img_array, axis=0) # Batch size 1
|
57 |
+
img_array = np.transpose(img_array, (0, 2, 1, 3)) # Untuk model dengan dimensi (batch, width, height, channels)
|
58 |
+
return img_array
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
def decode_batch_predictions(pred):
|
61 |
pred_texts = []
|
62 |
|
63 |
+
# Loop untuk setiap prediksi dalam batch
|
64 |
for i in range(pred.shape[0]):
|
65 |
+
# Mengambil argmax untuk mendapatkan indeks dengan probabilitas tertinggi
|
66 |
+
pred_indices = np.argmax(pred[i], axis=-1) # Ambil argmax untuk setiap karakter
|
67 |
|
68 |
+
# Memetakan indeks ke karakter (mengecualikan padding dan placeholder)
|
69 |
+
pred_text = ''.join([characters[int(c)] for c in pred_indices if c not in [-1, 0]])
|
70 |
|
71 |
+
# Menambahkan hasil teks untuk batch ke pred_texts
|
72 |
+
pred_texts.append(pred_text)
|
73 |
|
74 |
return pred_texts
|
75 |
|