Como posso usar o exemplo do Keras OCR?

eu encontreiexamples/image_ocr.py o que parece para o OCR. Portanto, deve ser possível fornecer uma imagem ao modelo e receber texto. No entanto, não tenho ideia de como fazê-lo. Como alimentar o modelo com uma nova imagem? Que tipo de pré-processamento é necessário?

O que eu fiz

Instalando as dependências:

Instalarcairocffi: sudo apt-get install python-cairocffiInstalareditdistance: sudo -H pip install editdistancemudançatrain para retornar o modelo e salvar o modelo treinado.Execute o script para treinar o modelo.

Agora eu tenho ummodel.h5. Qual é o próximo?

Vejohttps://github.com/MartinThoma/algorithms/tree/master/ML/ocr/keras para o meu código atual. Eu sei como carregar o modelo (veja abaixo) e isso parece funcionar. O problema é que não sei como alimentar novas digitalizações de imagens com texto para o modelo.

Questões secundárias relacionadasO que é CTC?Classificação temporal conexionista?Existem algoritmos que detectam de maneira confiável a rotação de um documento?Existem algoritmos que detectam linhas / blocos de texto / tabelas / imagens de maneira confiável (portanto, fazem uma segmentação razoável)? Acho que a detecção de arestas com suavização e histogramas em linhas já funciona razoavelmente bem para isso?O que eu tentei
#!/usr/bin/env python

from keras import backend as K
import keras
from keras.models import load_model
import os

from image_ocr import ctc_lambda_func, create_model, TextImageGenerator
from keras.layers import Lambda
from keras.utils.data_utils import get_file
import scipy.ndimage
import numpy

img_h = 64
img_w = 512
pool_size = 2
words_per_epoch = 16000
val_split = 0.2
val_words = int(words_per_epoch * (val_split))
if K.image_data_format() == 'channels_first':
    input_shape = (1, img_w, img_h)
else:
    input_shape = (img_w, img_h, 1)

fdir = os.path.dirname(get_file('wordlists.tgz',
                                origin='http://www.mythic-ai.com/datasets/wordlists.tgz', untar=True))

img_gen = TextImageGenerator(monogram_file=os.path.join(fdir, 'wordlist_mono_clean.txt'),
                             bigram_file=os.path.join(fdir, 'wordlist_bi_clean.txt'),
                             minibatch_size=32,
                             img_w=img_w,
                             img_h=img_h,
                             downsample_factor=(pool_size ** 2),
                             val_split=words_per_epoch - val_words
                             )
print("Input shape: {}".format(input_shape))
model, _, _ = create_model(input_shape, img_gen, pool_size, img_w, img_h)

model.load_weights("my_model.h5")

x = scipy.ndimage.imread('example.png', mode='L').transpose()
x = x.reshape(x.shape + (1,))

# Does not work
print(model.predict(x))

isto dá

2017-07-05 22:07:58.695665: I tensorflow/core/common_runtime/gpu/gpu_device.cc:996] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX TITAN Black, pci bus id: 0000:01:00.0)
Traceback (most recent call last):
  File "eval_example.py", line 45, in <module>
    print(model.predict(x))
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1567, in predict
    check_batch_axis=False)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 106, in _standardize_input_data
    'Found: array with shape ' + str(data.shape))
ValueError: The model expects 4 arrays, but only received one array. Found: array with shape (512, 64, 1)

questionAnswers(3)

yourAnswerToTheQuestion