Reaumur commited on
Commit
ba61b81
·
verified ·
1 Parent(s): dfa1dab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -29
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
- # Function to preprocess the image
50
  def prepare_image(img):
51
- # Resize gambar sesuai dengan ukuran yang diharapkan oleh model
52
- img = img.resize((img_width, img_height)) # Resize to (200, 50)
53
-
54
- # Konversi gambar ke array
55
- img_array = img_to_array(img)
56
-
57
- # Tambahkan dimensi untuk batch (menjadi 1, 50, 200) dan reshape ke bentuk (1, 50, 200, 1)
58
- img_array = np.expand_dims(img_array, axis=0) # Tambahkan dimensi untuk batch
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 batch (jika ada lebih dari satu batch)
78
  for i in range(pred.shape[0]):
79
- # Ambil argmax untuk mendapatkan indeks karakter yang diprediksi (yaitu karakter yang paling mungkin)
80
- pred_indices = np.argmax(pred[i], axis=-1) # Cari indeks dengan probabilitas tertinggi
81
 
82
- # Sekarang kita memetakan indeks ini ke karakter, mengecualikan nilai yang tidak valid seperti -1 atau 0 (padding)
83
- pred_text = ''.join([characters[int(c)] for c in pred_indices if c != -1 and c != 0])
84
 
85
- pred_texts.append(pred_text) # Simpan teks hasil decoding untuk batch yang sedang diproses
 
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