Tôi có hình ảnh từ như dưới đây:
Hãy nói đó là một 256x64
hình ảnh. Mục đích của tôi là trích xuất văn bản từ hình ảnh 73791096754314441539
về cơ bản là những gì OCR làm.
Tôi đang cố gắng xây dựng mô hình có thể nhận ra từ từ hình ảnh.
Khi tôi đang nói từ đó có thể là bất kỳ từ nào trong số các follwing:
- Bất kỳ từ điển, từ không từ điển
- az, AZ, các ký tự đặc biệt bao gồm
spaces
Tôi đã xây dựng một mô hình (đoạn trích vì chính sách của công ty) theo dòng chảy như sau:
inputs = tf.placeholder(tf.float32, [common.BATCH_SIZE, common.OUTPUT_SHAPE[1], common.OUTPUT_SHAPE[0], 1])
# Here we use sparse_placeholder that will generate a
# SparseTensor required by ctc_loss op.
targets = tf.sparse_placeholder(tf.int32)
# 1d array of size [batch_size]
seq_len = tf.placeholder(tf.int32, [common.BATCH_SIZE])
model = tf.layers.conv2d(inputs, 64, (3,3),strides=(1, 1), padding='same', name='c1')
model = tf.layers.max_pooling2d(model, (3,3), strides=(2,2), padding='same', name='m1')
model = tf.layers.conv2d(model, 128,(3,3), strides=(1, 1), padding='same', name='c2')
model = tf.layers.max_pooling2d(model, (3,3),strides=(2,2), padding='same', name='m2')
model = tf.transpose(model, [3,0,1,2])
shape = model.get_shape().as_list()
model = tf.reshape(model, [shape[0],-1,shape[2]*shape[3]])
cell = tf.nn.rnn_cell.LSTMCell(common.num_hidden, state_is_tuple=True)
cell = tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob=0.5, output_keep_prob=0.5)
stack = tf.nn.rnn_cell.MultiRNNCell([cell]*common.num_layers, state_is_tuple=True)
outputs, _ = tf.nn.dynamic_rnn(cell, model, seq_len, dtype=tf.float32,time_major=True)
Cách tiếp cận hiện tại của tôi là sử dụng đầu vào một hình ảnh từ thông qua một CNN
tính năng hình ảnh mức cao trích xuất, chuyển đổi các tính năng hình ảnh thành dữ liệu tuần tự như
[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]] -> [[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]
sau, sau đó chuyển nó qua RNN (LSTM hoặc BiLSTM), sau đó sử dụng CTC
(Mất kết nối tạm thời) tìm sự mất mát và mạng lưới đào tạo.
Tôi không nhận được kết quả như mong đợi, tôi muốn biết nếu:
- Có một số cách khác tốt hơn để thực hiện nhiệm vụ này
- Nếu tôi chuyển đổi các tính năng thành chuỗi chính xác
- Bất kỳ bài nghiên cứu nơi mà một cái gì đó như thế này được thực hiện.
font_size
hoặcimage dimension
sẽ ảnh hưởng đến độ chính xác của tôi. Bạn nghĩ sao ? Nhưng nếu tôi chỉ sử dụng BiLSTM như trong ocropy, tôi có thể cung cấp hình ảnh ở nhiều chiều khác nhau (có thể, vẫn đang thử nghiệm), ý kiến của bạn về điều này là gì?