Fast Multi-language LSTM-based Online Handwriting Recognition

02/22/2019 ∙ by Victor Carbune, et al. ∙ Google 0

We describe an online handwriting system that is able to support 102 languages using a deep neural network architecture. This new system has completely replaced our previous Segment-and-Decode-based system and reduced the error rate by 20 state-of-the-art results on IAM-OnDB for both the open and closed dataset setting. The system combines methods from sequence recognition with a new input encoding using Bézier curves. This leads to up to 10x faster recognition times compared to our previous system. Through a series of experiments we determine the optimal configuration of our models and report the results of our setup on a number of additional public datasets.



There are no comments yet.


page 1

page 2

page 3

page 4

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 Introduction

In this paper we discuss online handwriting recognition: Given a user input in the form of an ink, i.e. a list of touch or pen strokes, output the textual interpretation of this input. A stroke is a sequence of points with position and timestamp .

1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4 1 * 0.4
Figure 1: Example inputs for online handwriting recognition in different languages. See text for details.

Figure 1 illustrates example inputs to our online handwriting recognition system in different languages and scripts. The left column shows examples in English with different writing styles, with different types of content, and that may be written on one or multiple lines. The center column shows examples from five different alphabetic languages similar in structure to English: German, Russian, Vietnamese, Greek, and Georgian. The right column shows scripts that are significantly different from English: Chinese has a much larger set of more complex characters, and users often overlap characters with one another. Korean, while an alphabetic language, groups letters in syllables leading to a large “alphabet” of syllables. Hindi writing often contains a connecting ‘Shirorekha’ line and characters can form larger structures (grapheme clusters) which influence the written shape of the components. Arabic is written right-to-left (with embedded left-to-right sequences used for numbers or English names) and characters change shape depending on their position within a word. Emoji are non-text Unicode symbols that we also recognize.

Online handwriting recognition has recently been gaining importance for multiple reasons: (a) An increasing number of people in emerging markets are obtaining access to computing devices, many exclusively using mobile devices with touchscreens. Many of these users have native languages and scripts that are not as easily typed as English, e.g. due to the size of the alphabet or the use of grapheme clusters which make it difficult to design an intuitive keyboard layout ghoshindickeyboardlayout . (b) More and more large mobile devices with styluses are becoming available, such as the iPad Pro111, Microsoft Surface devices222, and Chromebooks with styluses333

Early work in online handwriting recognition looked at segment-and-decode classifiers, such as the Newton

yaeger:aaai98 . Another line of work plamondon2000online

focused on solving online handwriting recognition by making use of Hidden Markov Models (HMMs)


or hybrid approaches combining HMMs and Feed-forward Neural Networks

bengio1995lerec . The first HMM-free models were based on Time Delay Neural Networks (TDNNs) franzini1990connectionist ; jaeger:ijdar01 ; pittman:2007

, and more recent work focuses on Recurrent Neural Network (RNN) variants such as Long-Short-Term-Memory networks (LSTMs)

graves2008unconstrained ; deepblstm-icdar15 .

How to represent online handwriting data has been a research topic for a long time. Early approaches were feature-based, where each point is represented using a set of features jaeger:ijdar01 ; jaeger:ijdar03 ; yaeger:aaai98 , or using global features to represent entire characters jaeger:ijdar01

. More recently, the deep learning revolution has swept away most feature engineering efforts and replaced them with learned representations in many domains, e.g. speech 


, computer vision 


, and natural language processing 

mikolov2013distributed .

Together with architecture changes, training methodologies also changed, moving from relying on explicit segmentation pittman:2007 ; yaeger:aaai98 ; Google:HWRPAMI to implicit segmentation using the Connectionist Temporal Classification (CTC) loss Graves2006ConnectionistTC

, or Encoder-Decoder approaches trained with Maximum Likelihood Estimation 

DBLP:journals/corr/abs-1712-03991 . Further recent work is also described in kim:handbook14 .

The transition to more complex network architectures and end-to-end training can be associated with breakthroughs in related fields focused on sequence understanding where deep learning methods have outperformed “traditional” pattern recognition methods, e.g. in speech recognition

sainath2015deep ; sainath2015convolutional , OCR Wang2012EndtoendTR ; aksara-2017 , offline handwriting recognition graves2009offline , and computer vision szegedy2016rethinking .

In this paper we describe our new online handwriting recognition system based on deep learning methods. It replaces our previous segment-and-decode system Google:HWRPAMI

, which first over-segments the ink, then groups the segments into character hypotheses, and computes features for each character hypothesis which are then classified as characters using a rather shallow neural network. The recognition result is then obtained using a best path search decoding algorithm on the lattice of hypotheses incorporating additional knowledge sources such as language models. This system relies on numerous pre-processing, segmentation, and feature extraction heuristics which are no longer present in our new system. The new system reduces the amount of customization required, and consists of a simple stack of bidirectional LSTMs (BLSTMs), a single Logits layer, and the CTC loss

graves:pami09 (Sec. 2) trained for each script (Sec. 3). To support potentially many languages per script (see Table 1), language-specific language models and feature functions are used during decoding (Sec. 2.5). E.g. we have a single recognition model for Arabic script which is combined with specific language models and feature functions for our Arabic, Persian, and Urdu language recognizers. Table 1 shows the full list of scripts and languages that we currently support.

Script Languages
Latin Afrikaans, Azerbaijani, Bosnian, Catalan, Cebuano, Corsican, Czech, Welsh, Danish, German, English, Esperanto, Spanish, Estonian, Basque, Finnish, Filipino, French, Western Frisian, Irish, Scottish Gaelic, Galician, Hawaiian, Hmong, Croatian, Haitian Creole, Hungarian, Indonesian, Icelandic, Italian, Javanese, Kurdish, Latin, Luxembourgish, Lao, Lithuanian, Latvian, Malagasy, Maori, Malay, Maltese, Norwegian, Dutch, Nyanja, Polish, Portuguese, Romanian, Slovak, Slovenian, Samoan, Shona, Somali, Albanian, Sundanese, Swedish, Swahili, Turkish, Xhosa, Zulu
Cyrillic Russian, Belarusian, Bulgarian, Kazakh, Mongolian, Serbian, Ukrainian, Uzbek, Macedonian, Kyrgyz, Tajik
Chinese Simplified Chinese, Traditional Chinese, Cantonese
Arabic Arabic, Persian, Urdu
Devanagari Hindi, Marathi, Nepali
Bengali Bangla, Assamese
Ethiopic Amharic, Tigrinya
Languages with distinct scripts: Armenian, Burmese, Georgian, Greek, Gujarati, Hebrew, Japanese, Kannada, Khmer, Korean, Lao, Malayalam, Odia, Punjabi, Sinhala, Tamil, Telugu, Thai, Tibetan, Vietnamese444While Vietnamese is a Latin script language, we have a dedicated model for it because of the large amount of diacritics not used in other Latin script languages.
Table 1: List of languages supported in our system grouped by script.

The new models are more accurate (Sec. 4), smaller, and faster (Table 9) than our previous segment-and-decode models and eliminate the need for a large number of engineered features and heuristics.

We present an extensive comparison of the differences in recognition accuracy for eight languages (Sec. 5) and compare the accuracy of models trained on publicly available datasets where available (Sec. 4). In addition, we propose a new standard experimental protocol for the IBM-UB-1 dataset IBMUB1 (Sec. 4.2) to enable easier comparison between approaches in the future.

The main contributions of our paper are as follows:

  • We describe in detail our recurrent neural network-based recognition stack and provide a description of how we tuned the model. We also provide a detailed experimental comparison with the previous segment-and-decode based stack Google:HWRPAMI on the supported languages.

  • We describe a novel input representation based on Bézier curve interpolation, which produces shorter input sequences, which results in faster recognitions.

  • Our system achieves a new state-of-the-art on the IAM-OnDB dataset, both for open and closed training sets.

  • We introduce an evaluation protocol for the less commonly-used English IBM-UB-1 query dataset. We provide experimental results that quantify the structural difference between IBM-UB-1, IAM-OnDB, and our internal dataset.

  • We perform ablation studies and report results on numerous experiments highlighting the contributions of the individual components of the new recognition stack on our internal datasets.

2 End-to-end Model Architecture

Our handwriting recognition model draws its inspiration from research aimed at building end-to-end transcription models in the context of handwriting recognition graves:pami09 , optical character recognition aksara-2017 , and acoustic modeling in speech recognition sainath2015deep . The model architecture is constructed from common neural network blocks, i.e. bidirectional LSTMs and fully-connected layers (Figure 2). It is trained in an end-to-end manner using the CTC loss graves:pami09 .

Our architecture is similar to what is often used in the context of acoustic modeling for speech recognition sainath2015convolutional , in which it is referred to as a CLDNN (Convolutions, LSTMs, and DNNs), yet we differ from it in four points. Firstly, we do not use convolution layers, which in our own experience do not add value for large networks trained on large datasets of relatively short (compared to speech input) sequences typically seen in handwriting recognition. Secondly, we use bidirectional LSTMs, which due to latency constraints is not feasible in speech recognition systems. Thirdly, our architecture does not make use of additional fully-connected layers before and after the bidirectional LSTM layers. And finally, we train our system using the CTC loss, as opposed to the HMMs used in sainath2015convolutional .

Figure 2:

An overview our recognition models. In our architecture the input representation is passed through one or more bidirectional LSTM layers, and a final softmax layer makes a classification decision for the output at each time step.

This structure makes many components of our previous system Google:HWRPAMI unnecessary, e.g. for feature extraction and segmentation. The heuristics that were hard-coded into our previous system, e.g. stroke-reordering and character hypothesis building, are now implicitly learned from the training data.

The model takes as input a time series of length encoding the user input (Sec. 2.1) and passes it through several bidirectional LSTM layers schuster1997bidirectional which learn the structure of characters (Sec. 2.2).

The output of the final LSTM layer is passed through a softmax layer (Sec. 2.3

) leading to a sequence of probability distributions over characters for each time step.

For CTC decoding (Sec. 3.1) we use beam search to combine the softmax outputs with character-based language models, word-based language models, and information about language-specific characters as in our previous system Google:HWRPAMI .

2.1 Input Representation

In our earlier paper Google:HWRPAMI we presented results on our datasets with a model similar to the one proposed in graves:pami09 . In that model we used 23 per-point features (similarly to jaeger:ijdar01 ) as described in our segment-and-decode system to represent the input. In further experimentation we found that in substantially deeper and wider models, engineered features are unnecessary and their removal leads to better results. This confirms the observation that learned representations often outperform handcrafted features in scenarios in which sufficient training data is available, e.g. in computer vision lecun-lenet98 and in speech recognition waibel-phonemes89 . In the experiments presented here, we use two representations:

2.1.1 Raw Touch Points

The simplest representation of stroke data is as a sequence of touch points. In our current system, we use a sequence of 5-dimensional points where are the coordinates of the th touchpoint, is the timestamp of the touchpoint since the first touch point in the current observation in seconds, indicates whether the point corresponds to a pen-up () or pen-down () stroke, and indicates the start of a new stroke ( otherwise).555We acknowledge a redundancy between the features and which evolved over time from experimenting with explicit pressure data. We did not perform additional experiments to avoid this redundancy at this time but do not expect a large change in results when dropping either of these features.

In order to keep the system as flexible as possible with respect to differences in the writing surface, e.g. area shape, size, spatial resolution, and sampling rate, we perform some minimal preprocessing:

  • Normalization of and coordinates, by shifting in such that , and shifting and scaling the writing area isometrically such that the coordinate spans the range between and . In cases where the bounding box of the writing area is unknown we use a surrogate area 20% larger than the observed range of touch points.

  • Equidistant linear resampling along the strokes with , i.e. a line of length 1 will have 20 points.

We do not assume that words are written on a fixed baseline or that the input is horizontal. As in graves:pami09 , we use the differences between consecutive points for the coordinates and the time such that our input sequence is for , and for .

2.1.2 Bézier Curves

However simple, the raw input data has some drawbacks, i.e.

  • Resolution: Not all input devices sample inputs at the same rate, resulting in different point densities along the input strokes, requiring resampling which may inadvertently normalize-out details in the input.

  • Length: We choose the (re-)sampling rate such as to represent the smallest features well, which leads to over-sampling in less interesting parts of the stroke, e.g. in straight lines.

  • Model complexity: The model has to learn to map small consecutive steps to larger global features.

Bézier curves

are a natural way to describe trajectories in space, and have been used to represent online handwriting data in the past, yet mostly as a means of removing outliers in the input data 

huang2007preprocessing , up-sampling sparse data jaeger:ijdar01 , or for rendering handwriting data smoothly on a screen bezier01 . Since a sequence of Bézier curves can represent a potentially long point sequence compactly, irrespective of the original sampling rate, we experiment with representing a sequence of input points as a sequence of parametric cubic polynomials, and using these as inputs to the recognition model.

These Bézier curves for , , and are cubic polynomials in , i.e..:


We start by normalizing the size of the entire ink such that the values are within the range , similar to how we process it for raw points. The time values are scaled linearly to match the length of the ink such that


in order to obtain values in the same numerical range as and . This sets the time difference between the first and last point of the stroke to be equal to the total spatial length of the stroke.

For each stroke in an ink, the coefficients , , and are computed by minimizing the sum of squared errors (SSE) between each observed point and its corresponding closest point (defined by ) on the Bézier curve:


Where is the number of points in the stroke. Given a set of coordinates , computing the coefficients corresponds to solving the following linear system of equations:


which can be solved exactly for , and in the least-squares sense otherwise, e.g. by solving the normalized equations


for the coefficients . We alternate between minimizing the SSE in eq. (3) and finding the corresponding points , until convergence. The coordinates are updated using a Newton step on


which is zero when is orthogonal to the direction of the curve .

If (a) the curve cannot fit the points well (SSE error is too large) or if (b) the curve has too sharp bends (arc length longer than 3 times the endpoint distance) we split the curve into two parts. We determine the split point in case (a) by finding the triplet of consecutive points with the smallest angle, and in case (b) as the point closest to the maximum local curvature along the entire Bézier curve. This heuristic is applied recursively until both the curve matching criteria are met.

As a final step, to remove spurious breakpoints, consecutive curves that can be represented by a single curve are stitched back together, resulting in a compact set of Bézier curves representing the data within the above constraints. For each consecutive pair of curves, we try to fit a single curve using the combined set of underlying points. If the fit agrees with the above criteria, we replace the two curves by the new one. This is applied repeatedly until no merging happens anymore.

Figure 3:

Parameterization of each Bézier curve used to feed the network. Namely: vector between the endpoints (blue), distance between the control points and the endpoints (green dashed lines, 2 values), and the two angles between each control point and the endpoints (green arcs, 2 values).

Since the Bézier coefficients , , and may vary significantly in range, each curve is fed to the network as a 10-dimensional vector consisting of:

  • the vector between the endpoints (Figure 3, blue vector, 2 values),

  • the distance between the control points and the endpoints relative to the distance between the endpoints (green dashed lines, 2 values),

  • the two angles between each control point and the endpoints (green arcs, 2 values),

  • the time coefficients , and (not shown),

  • a boolean value indicating whether this is a pen-up or pen-down curve (not shown).

Due to the normalization of the , , and coordinates, as well as the constraints on the curves themselves, most of the resulting values are in the range .

The input data is of higher dimension than the raw inputs described in Sec. 2.1.1, i.e. 10 vs. 5 dimensional, but the input sequence itself is roughly shorter, making them a good choice for latency-sensitive models.

In most of the cases, as highlighted through the experimental sections in this paper, the curve representations contribute to better recognition accuracy and speed of our models. However, there are also situations where the curve representation introduces mistakes: punctuation marks become more similar to each other and sometimes are wrongly recognized, capitalization errors appear from time to time and in some cases the candidate recognitions corresponding to higher language model scores are preferred.

2.2 Bidirectional Long-Short-Term-Memory Recurrent Neural Networks

LSTMs Hochreiter1997LSTM have become one of the most commonly used RNN cells because they are easy to train and give good results jozefowicz2015empirical . In all experiments we use bidirectional LSTMs, i.e. we process the input sequence forward and backward and merge the output states of each layer before feeding them to the next layer. The exact number of layers and nodes is determined empirically for each script. We give an overview of the impact of the number of nodes and layers in section 4. We also list the configurations for several scripts in our production system, as of this writing.

2.3 Softmax Layer

The output of the LSTM layers at each timestep is fed into a softmax layer to get a probability distribution over the possible characters in the script (including spaces, punctuation marks, numbers or other special characters), plus a blank label required by the CTC loss and decoder.

2.4 Decoding

The output of the softmax layer is a sequence of time steps of classes that we decode using CTC decoding Graves2006ConnectionistTC . The logits from the softmax layer are combined with language-specific prior knowledge (cp. Sec. 2.5). For each of these additional knowledge sources we learn a weight (called “decoder weight” in the following) and combine them linearly (cp. Sec. 3). The learned combination is used as described in Graves2014TowardsES to guide the beam search during decoding.666We implement this as a BaseBeamScorer ( which is passed to the CTCBeamSearchDecoder

implementation in TensorFlow

tensorflow2015-whitepaper .

This combination of different knowledge sources allows us to train one recognition model per script (e.g. Latin script, or Cyrillic script) and then use it to serve multiple languages (see Table 1).

2.5 Feature Functions: Language Models and Character Classes

Similarly to our previous work Google:HWRPAMI , we define several scoring functions, which we refer to as feature functions. The goal of these feature functions is to introduce prior knowledge about the underlying language into the system. The introduction of recurrent neural networks has reduced the need for many of them and we now use only the following three:

  • Character Language Models: For each language we support, we build a 7-gram language model over Unicode codepoints from a large web-mined text corpus using Stupid back-off brants:prodlm2007 . The final files are pruned to 10 million 7-grams each. Compared to our previous system Google:HWRPAMI , we found that language model size has a smaller impact on the recognition accuracy, which is likely due to the capability of recurrent neural networks to capture dependencies between consecutive characters. We therefore use smaller language models over shorter contexts.

  • Word Language Models: For languages using spaces to separate words, we also use a word-based language model trained on a similar corpus as the character language models speech-lm-mining ; speech-lm-infra , using 3-grams pruned to between 1.25 million and 1.5 million entries.

  • Character Classes: We add a scoring heuristic which boosts the score of characters from the language’s alphabet. This feature function provides a strong signal for rare characters that may not be recognized confidently by the LSTM, and which the other language models might not weigh heavily enough to be recognized. This feature function was inspired by our previous system Google:HWRPAMI .

In Section 4 we provide an experimental evaluation of how much each of these feature functions contributes to the final result for several languages.

3 Training

The training of our system happens in two stages, on two different datasets:

  1. End-to-end training of the neural network model using the CTC loss using a large training dataset

  2. Tuning of the decoder weights using Bayesian optimization through Gaussian Processes in Vizier golovin-vizier , using a much smaller and distinct dataset.

Using separate datasets is important because the neural network learns the local appearance as well as an implicit language model from the training data. It will be overconfident on its training data and thus learning the decoder weights on the same dataset could result in weights biased towards the neural network model.

3.1 Connectionist Temporal Classification Loss

As our training data does not contain frame-aligned labels, we rely on the CTC loss Graves2006ConnectionistTC for training which treats the alignment between inputs and labels as a hidden variable. CTC training introduces an additional blank label which is used internally for learning alignments jointly with character hypotheses, as described in Graves2006ConnectionistTC .

We train all neural network weights jointly using the standard TensorFlow tensorflow2015-whitepaper implementation of CTC training using the Adam Optimizer Kingma2014AdamAM with a batch size of 8, a learning rate of

, and gradient clipping such that the gradient

-norm is . Additionally, to improve the robustness of our models and prevent overfitting, we train our models using random dropout hinton12dropout ; pham2014dropout after each LSTM layer with a dropout rate of . We train until the error rate on the evaluation dataset no longer improves for 5 million steps.

3.2 Bayesian Optimization for Tuning Decoder Weights

To optimize the decoder weights, we rely on the Google Vizier service and its default algorithm, specifically batched Gaussian process bandits, and expected improvement as the acquisition function golovin-vizier .

For each recognizer training we start 7 Vizier studies, each performing 500 individual trials, and then we pick the configuration that performed best across all of these trials. We experimentally found that using 7 separate studies with different random initializations regularly leads to better results than running a single study once. We found that using more than 500 trials per study does not lead to any additional improvement.

For each script we train these weights on a subset of the languages for which we have sufficient data, and transfer the weights to all the other languages. E.g. for the Latin-script languages, we train the decoder weights on English and German, and use the resulting weights for all languages in the first row of Table 1.

4 Experimental Evaluation

In the following, where possible, we present results for public datasets in a closed data scenario, i.e. training and testing models on the public dataset using a standard protocol. In addition we present evaluation results for public datasets in an open data scenario against our production setup, i.e. in which the model is trained on our own data. Finally, we show experimental results for some of the major languages on our internal datasets. Whenever possible we compare these results to the state of the art and to our previous system Google:HWRPAMI .

4.1 IAM-OnDB

The IAM-OnDB dataset liwicki:icdar05 is probably the most used evaluation dataset for online handwriting recognition. It consists of 298 523 characters in 86 272 word instances from a dictionary of 11 059 words written by 221 writers. We use the standard IAM-OnDB dataset separation: one training set, two validations sets and a test set containing 5 363, 1 438, 1 518 and 3 859 written lines, respectively. We tune the decoder weights using the validation set with 1 438 items and report error rates on the test set.

input lstm 64 nodes 128 nodes 256 nodes
1 layer 6.1 5.95 5.56
raw 3 layers 4.03 4.73 4.34
5 layers 4.34 4.20 4.17
1 layer 6.57 6.38 6.98
curves 3 layers 4.16 4.16 4.83
5 layers 4.02 4.22 4.11
Table 2: Comparison of character error rates (lower is better) on the IAM-OnDB test set for different LSTM layers configurations. For each LSTM width and input type, we show the best result in bold.
Figure 4: CER of models trained on the IAM-OnDB dataset with different numbers of LSTM layers and LSTM nodes using raw (left) and curve (right) inputs. Solid lines indicate results without any language models or feature functions in decoding, dashed lines indicate results with the fully-tuned system.

We perform a more extensive study of the number of layers and nodes per layer for both the raw and curve input formats to determine the optimal size of the bidirectional LSTM network (see Figure 4, Table 2). We first run experiments without additional feature functions (Figure 4, solid lines), then re-compute the results with tuned weights for language models and character classes (Figure 4, dashed lines). We observe that for both input formats, using 3 or 5 layers outperforms more shallow networks, and using more layers gives hardly any improvement. Furthermore, using 64 nodes per layer is sufficient, as wider networks give only small improvements, if at all.

system CER[%] WER[%]
Frinken et al. BLSTM deepblstm-icdar15 12.3 25.0
Graves et al. BLSTM graves:pami09 11.5 20.3
Liwicki et al. LSTM liwicki:mva2011 - 18.9
this work (curve, 5x64, no FF) 5.9 18.6
this work (curve, 5x64, FF) 4.0 10.6
our previous BLSTM Google:HWRPAMI * 8.8 26.7
combination liwicki:mva2011 * - 13.8
our Segment-and-Decode Google:HWRPAMI * 4.3 10.4
this work (production system) * 2.5 6.5
Table 3: Error rates on the IAM-OnDB test set in comparison to the state of the art and our previous system Google:HWRPAMI . A "*" in the "system" column indicates the use of an open training set. "FF" stands for "feature functions" as described in sec. 2.4.

Finally, we show a comparison of our old and new systems with the literature on the IAM-OnDB dataset in Table 3. Our method establishes a new state of the art result when relying on closed data using IAM-OnDB, as well as when relying on our in-house data that we use for our production system, which was not tuned for the IAM-OnDB data and for which none of the IAM-OnDB data was used for training.

To better understand where the improvements come from, we discuss the differences between the previous state-of-the-art system (Graves et al. BLSTM graves:pami09 ) and this work across four dimensions: input pre-processing and feature extraction, neural network architecture, CTC training and decoding, and model training methodology.

Our input pre-processing (Sec 2.1) differs only in minor ways: the

-coordinate used is not first transformed using a high-pass filter, we don’t split text-lines using gaps and we don’t remove delayed strokes, nor do we do any skew and slant correction or other pre-processing.

The major difference comes from feature extraction. In contrast to the 25 features per point uesd in graves:pami09 , we use either 5 features (raw) or 10 features (curves). While the 25 features included both temporal (position in the time series) and spatial features (offline representation), our work uses only the temporal structure. In contrast also to our previous system Google:HWRPAMI , using a more compact representation (and reducing the number of points for curves) allows a feature representation, including spatial structure, to be learned in the first or upper layers of the neural network.

The neural network architecture differs both in internal structure of the LSTM cell as well as in the architecture configuration. Our internal structure differs only in that we do not use peephole connections gers2001lstm .

As opposed to relying on a single bidirectional LSTM layer of width 100, we experiment with a number of configuration variants as detailed in Figure 4. We note that it is particularly important to have more than one layer in order to learn a meaningful representation without feature extraction.

We use the CTC forward-backward training algorithm as described in graves:pami09

, and implemented in TensorFlow. The training hyperparameters are described in Section 


The CTC decoding algorithm incorporates feature functions similarly to how the dictionary is incorporated in the previous state-of-the-art system. However, we use more feature functions, our language models are trained on a different corpus, and the combination weights are optimized separately as described in Sec 3.2.

4.2 Ibm-Ub-1

Another publicly-accessible English-language dataset is the IBM-UB-1 dataset IBMUB1 . From the available datasets therein, we use the English query dataset, which consists of 63 268 handwritten English words. As this dataset has not been used often in the academic literature, we propose an evaluation protocol. We split this dataset into 4 parts with non-overlapping writer IDs: 47 108 items for training, 4 690 for decoder weight tuning, 6 134 for validation and 5 336 for testing777The experimental protocol we used in the experiments are documented in the ancillary files of this submission..

Figure 5: CER of models trained on the IBM-UB-1 dataset with different numbers of LSTM layers and LSTM nodes using raw (left) and curve (right) inputs. Solid lines indicate results without any language models or feature functions in decoding, dashed lines indicate results with the fully-tuned system.

We perform a similar set of experiments as we did for IAM-OnDB to determine the right depth and width of our neural network architecture. The results of these experiments are shown in Figure 5. The conclusion for this dataset is similar to the conclusions we drew for the IAM-OnDB: using networks with 5 layers of bidirectional LSTMs with 64 cells each is sufficient for good accuracy. Less deep and less wide networks perform substantially worse, but larger networks only give small improvements. This is true regardless of the input processing method chosen.

system CER[%] WER[%]
this work (curve, 5x64, no FF) 6.0 25.1
this work (curve, 5x64, FF) 4.1 15.1
Segment-and-Decode from Google:HWRPAMI * 6.7 22.2
this work (production system) (sec 5) * 4.1 15.3
Table 4: Error rates on IBM-UB-1 test set in comparison to our previous system Google:HWRPAMI . A "*" in the "system" column indicates the use of an open training set.

We give some exemplary results and a comparison with our current production system as well as results for our previous system in Table 4. We note that our current system is about 38% and 32% better (relative) in CER and WER, respectively, when compared to the previous segment-and-decode approach. The lack of improvement in error rate when evaluating on our production system is due to the fact that our datasets contain spaces while the same setup trained solely on IBM-UB-1 does not.

4.3 Additional public datasets

We provide an evaluation of our production system trained on our in-house datasets applied to a number of publicly available benchmark datasets from the literature. Note that for all experiments presented in this section we evaluate our current live system without any tuning specifec to the tasks at hand.

4.3.1 Chinese Isolated Characters (ICDAR 2013 competition)

The ICDAR-2013 Competition for Online Handwriting Chinese Character Recognition yin2013icdar introduced a dataset for classifying the most common Chinese characters. We report the error rates in comparison to published results from the competition and more recent work done by others in Table 5.

We evaluate our live production system on this dataset. Our system was not tuned to the task at hand and was trained as a multi-character recognizer, thus it is not even aware that each sample only contains a single character. Further, our system supports 12 363 different characters while the competition data only contains 3 755 characters. Note that our system did not have access to the training data for this task at all.

Whenever our system returns more than one character for a sample, we count this as an error (this happened twice on the entire test set of 224 590 samples). Despite supporting almost four times as many characters than needed for the CASIA data and not having been tuned to the task, the accuracy of our system is still competitive with systems that were tuned for this data specifically.

system ER[%]
Human Performance yin2013icdar 4.8
Traditional Benchmark liu2013online 4.7
ICDAR-2011 Winner icdar2011-casia-competition 4.2
this work (production system) sec. 5 3.2
ICDAR-2013 Winner: UWarwick yin2013icdar 2.6
RNN: NET4 casiaRNNnet4 2.2
100LSTM-512LSTM-512FC-3755FC CASIA-icfhr18 2.2
RNN: Ensemble-NET123456 casiaRNNnet4 1.9
Table 5: Error rates on ICDAR-2013 Competition Database of Online Handwritten Chinese Character Recognition. Our system was trained with an open training set, including a mix of characters, words, and phrases.

4.3.2 Vietnamese Online Handwriting Recognition (ICFHR 2018 competition)

In the ICFHR2018 Competition on Vietnamese Online Handwritten Text Recognition using VNOnDB viet-comp-icfhr2018 , our production system was evaluated against other systems. The system used in the competition is the one reported and described in this paper. Due to licensing restrictions we were unable to do any experiments on the competition training data, or specific tuning for the competition, which was not the case for the other systems mentioned here.

We participated in the two tasks that best suited the purpose of our system, specifically the "Word" (ref. table 6) and the "Text line" (ref. table 7) recognition levels. Even though we can technically process paragraph level inputs, our system was not built with this goal in mind.

public test set secret test set
system CER[%] WER[%] CER[%] WER[%]
this work (sec. 5) 6.1 13.2 9.8 20.5
IVTOVTask1 2.9 6.5 7.3 15.3
MyScriptTask1 2.9 6.5 6.0 12.7
Table 6: Results on the VNONDB-Word dataset.
public test set secret test set
system CER[%] WER[%] CER[%] WER[%]
this work (sec. 5) 6.9 19.0 10.3 27.0
IVTOVTask2 3.2 14.1 5.6 21.0
MyScriptTask2_1 1.0 2.0 1.0 3.4
MyScriptTask2_2 1.6 4.0 1.7 5.1
Table 7: Results on the VNONDB-Line dataset.

In contrast to us, the other teams used the training and validation sets to tune their systems:

  • The IVTOV team’s system is very similar to our system. It makes use of bidirectional LSTM layers trained end-to-end with the CTC loss. The inputs used are delta and coordinates, together with pen-up strokes (boolean feature quantifying whether a stroke has ended or not). They report using a two-layer network of 100 cells each and additional preprocessing for better handling the dataset.

  • The MyScript team submitted two systems. The first system has an explicit segmentation component along with a feed-forward network for recognizing character hypotheses, similar in formulation to our previous system Google:HWRPAMI . In addition, they also make use of a bidirectional LSTM system trained end-to-end with the CTC loss. They do not provide additional details on which system is which.

We note that the modeling stacks of the systems out-performing ours in this competition are not fundamentally different (to the best of our knowledge, according to released descriptions). We therefore believe that our system might perform comparably if trained on the competition training dataset as well.

On our internal testset of Vietnamese data, our new system obtains a CER of 3.3% which is 54% relative better than the old Segment-and-Decode system which had a CER of 7.2% (see also Table 7).

4.4 Tuning neural network parameters on our internal data

Our in-house datasets consist of various types of training data, the amount of which varies by script. Sources of training data include data collected through prompting, commercially available data, artificially inflated data, and labeled/self-labeled anonymized recognition requests (see Google:HWRPAMI for a more detailed description). The number of training samples varies from tens of thousands to several million per script, depending on the complexity and usage.

Figure 6: CER of models trained on our internal datasets evaluated on our English-language validation set with different numbers of LSTM layers and LSTM nodes using raw (left) and curve (right) inputs. Solid lines indicate results without any language models or feature functions in decoding, dashed lines indicate results with the fully-tuned system.

The best configuration for our production systems were identified by running multiple experiments over a range of layer depths and widths on our Latin script datasets. For the Latin script experiments shown in Figure 6, the training set we used was a mixture of data from all the Latin-script languages we support and evaluation is done on an English validation dataset, also used for the English evaluation in Table 9.

Similarly to experiments depicted in Figure 4 and Figure 5, increasing the depth and width of the network architecture brings diminishing returns fairly quickly. However, overfitting is less pronounced, particularly when relying on Bézier curve inputs, highlighting that our datasets are more complex in nature.

In all our experiments using our production datasets, the Bézier curve inputs outperformed the raw inputs both in terms of accuracy and recognition latency, and are thus used throughout in our production models. We hypothesize that this is due to the implicit normalization of sampling rates and thus line smoothness of the input data. The input data of our production datasets come from a wide variety of data sources including data collection and crowd sourcing from many different types of devices, unlike academic datasets such as IBM-UB-1 or IAM-OnDB which were collected under standardized conditions.

5 System Performance and Discussion

The setup described throughout this paper that obtained the best results relies on input processing with Bézier spline interpolation (Sec. 2.1.2), followed by 4–5 layers of varying width bidirectional LSTMs, followed by a final softmax layer. For each script, we experimentally determined the best configuration through multiple training runs.

We performed an ablation study with the best configurations for each of the eight most important scripts by number of users and compare the results with our previous work Google:HWRPAMI (Table 9). The largest relative improvement comes from the overall network architecture stack, followed by the use of the character language model and the other feature functions.

In addition, we show the relative improvement in error rates on the languages for which we have evaluation datasets of more than 2 000 items (Figure 7). The new architecture performs between 20%–40% (relative) better over almost all languages.

5.1 Differences Between IAM-OnDB, IBM-UB-1 and our internal datasets

train/test IAM-OnDB IBM-UB-1 own dataset
IAM-OnDB 3.8 17.7 31.2
IBM-UB-1 35.1 4.1 32.9
own dataset 3.3 4.8 8.7
Table 8: CER comparison when training and evaluating IAM-OnDB, IBM-UB-1 and our Latin training/eval set. We want to highlight the fundamental differences between the different datasets.

To understand how the different datasets relate to each other, we performed a set of experiments and evaluations with the goal of better characterizing the differences between the datasets.

We trained a recognizer on each of the three training sets separately, then evaluated each system on all three test sets (Table 8). The neural network architecture is the same as the one we determined earlier (5 layers bidirectional LSTMs of 64 cells each) with the same feature functions, with weights tuned on the corresponding tuning dataset. The inputs are processed using Bézier curves.

To better understand the source of discrepancy when training on IAM-OnDB and evaluating on IBM-UB-1, we note the different characteristics of the datasets:

  • IBM-UB-1 has predominantly cursive writing, while IAM-OnDB has mostly printed writing

  • IBM-UB-1 contains single words, while IAM-OnDB has lines of space-separated words

This results in models trained on the IBM-UB-1 dataset not being able to predict spaces as they are not present in the dataset’s alphabet. In addition, the printed writing style of IAM-OnDB makes recognition harder when evaluating cursive writing from IBM-UB-1. It is likely that the lack of structure through words-only data makes recognizing IAM-OnDB on a system trained on IBM-UB-1 harder than vice-versa.

Systems trained on IBM-UB-1 or IAM-OnDB alone perform significantly worse on our internal datasets, as our data distribution covers a wide range of use-cases not necessarily relevant to, or present, in the two academic datasets: sloppy handwriting, overlapping characters for handling writing on small input surfaces, non-uniform sampling rates, and partially rotated inputs.

The network trained on the internal dataset performs well on all three datasets. It performs better on IAM-OnDB than the system trained only thereon, but worse for IBM-UB-1. We believe that using only cursive words when training allows the network to better learn the sample characteristics, than when learning about space separation and other structure properties not present in IBM-UB-1.

Language en es de ar ko th hi zh
System CER [%]
Segment-and-Decode Google:HWRPAMI 7.5 7.2 6.0 14.8 13.8 4.1 15.7 3.76
BLSTM (comparison) Google:HWRPAMI 10.2 12.4 9.5 18.2 44.2 3.9 15.4
Model architecture (this work) 5224 5160 5160 5128 5192 4192
(2) BLSTM-CTC Baseline Curves 8.00 6.38 7.12 12.29 6.87 2.41 7.65 1.54

+ n-gram LM

6.54 4.64 5.43 8.10 6.90 1.82 7.00 1.38
(4) + character classes 6.60 4.59 5.36 7.93 6.79 1.78 7.32 1.39
(5) + word LM 6.48 4.56 5.40 7.87 7.42 —-
Avg. latency per item [ms]
Segment-and-Decode Google:HWRPAMI 315 359 372 221 389 165 139 208
This work  23  25  26  14  20  13  19  30
Number of parameters (per script)
Segment-and-Decode Google:HWRPAMI 5 281 061 5 342 561 8 381 686 6 318 361 9 721 361
This work 5 386 170 2 776 937 3 746 999 1 769 668 3 927 736 7 729 994
Table 9: Character error rates on the validation data using successively more of the system components described above for English (en), Spanish (es), German (de), Arabic (ar), Korean (ko), Thai (th), Hindi (hi), and Chinese (zh) along with the respective number of items and characters in the test sets. Average latencies for all languages and models were computed on an Intel Xeon E5-2690 CPU running at 2.6 GHz.
Figure 7: A comparison of the CERs for the LSTM and SD (Segment-and-Decode) system for all languages on our internal test sets with more than 2000 items. The scatter plot shows the ISO language code at a position corresponding to the CER for the SD system (x-axis) and LSTM system (y-axis). Points below the diagonal are improvements of LSTM over SD. The plot also shows the lines of 20% and 40% relative improvement.

6 Conclusion

We describe the online handwriting recognition system that we currently use at Google for 102 languages in 26 scripts. The system is based on an end-to-end trained neural network and replaces our old Segment-and-Decode system. Recognition accuracy of the new system improves by 20% to 40% relative depending on the language while using smaller and faster models. We encode the touch inputs using a Bézier curve representation which performs at least as well as raw touch inputs but which also allows for a faster recognition because the input sequence representation is shorter.

We further compare the performance of our system to the state of the art on publicly available datasets such as IAM-OnDB, IBM-UB-1, and CASIA and improve over the previous best published result on IAM-OnDB.


We would like to thank the following contributors for fruitful discussions, ideas, and support: Ashok Popat, Yasuhisa Fujii, Dmitriy Genzel, Jake Walker, David Rybach, Daan van Esch, and Eugene Brevdo. We thank Google’s OCR team for the numerous collaborations throughout the years that have made this work easier, as well as the speech recognition and machine translation teams at Google for tools and support for some of the components we use in this paper.


  • (1)

    Abadi, M., Agarwal, A., Barham, P., Brevdo, E., Chen, Z., Citro, C., Corrado, G.S., Davis, A., Dean, J., Devin, M., Ghemawat, S., Goodfellow, I., Harp, A., Irving, G., Isard, M., Jia, Y., Jozefowicz, R., Kaiser, L., Kudlur, M., Levenberg, J., Mané, D., Monga, R., Moore, S., Murray, D., Olah, C., Schuster, M., Shlens, J., Steiner, B., Sutskever, I., Talwar, K., Tucker, P., Vanhoucke, V., Vasudevan, V., Viégas, F., Vinyals, O., Warden, P., Wattenberg, M., Wicke, M., Yu, Y., Zheng, X.: TensorFlow: Large-scale machine learning on heterogeneous systems (2015).

    URL Software available from
  • (2) Bengio, Y., LeCun, Y., Nohl, C., Burges, C.: Lerec: A NN/HMM hybrid for on-line handwriting recognition. Neural Computation 7(6), 1289–1303 (1995)
  • (3) Brants, T., Popat, A.C., Xu, P., Och, F.J., Dean, J.: Large language models in machine translation. In: EMNLP-CoNLL, pp. 858–867 (2007)
  • (4) Chua, M., van Esch, D., Coccaro, N., Cho, E., Bhandari, S., Jia, L.: Text normalization infrastructure that scales to hundreds of language varieties. In: Proceedings of the 11th edition of the Language Resources and Evaluation Conference (2018)
  • (5) Franzini, M., Lee, K.F., Waibel, A.: Connectionist Viterbi training: a new hybrid method for continuous speech recognition. In: Acoustics, Speech, and Signal Processing, 1990. ICASSP-90., 1990 International Conference on, pp. 425–428. IEEE (1990)
  • (6) Frinken, V., Uchida, S.: Deep BLSTM neural networks for unconstrained continuous handwritten text recognition. In: ICDAR (2015)
  • (7) Fujii, Y., Driesen, K., Baccash, J., Hurst, A., Popat, A.C.: Sequence-to-label script identification for multilingual OCR. In: ICDAR (2017)
  • (8) Gers, F.A., Schmidhuber, E.: Lstm recurrent networks learn simple context-free and context-sensitive languages. IEEE Transactions on Neural Networks 12(6), 1333–1340 (2001)
  • (9) Ghosh, S., Joshi, A.: Text entry in indian languages on mobile: User perspectives. In: India HCI (2014)
  • (10) Golovin, D., Solnik, B., Moitra, S., Kochanski, G., Karro, J.E., Sculley, D. (eds.): Google Vizier: A Service for Black-Box Optimization (2017)
  • (11) Graves, A., Fernández, S., Gomez, F.J., Schmidhuber, J.: Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks. In: ICML (2006)
  • (12) Graves, A., Jaitly, N.: Towards end-to-end speech recognition with recurrent neural networks. In: ICML (2014)
  • (13) Graves, A., Liwicki, M., Bunke, H., Schmidhuber, J., Fernández, S.: Unconstrained on-line handwriting recognition with recurrent neural networks. In: Advances in neural information processing systems, pp. 577–584 (2008)
  • (14) Graves, A., Liwicki, M., Fernandez, S., Bertolami, R., Bunke, H., Schmidhuber, J.: A novel connectionist system for unconstrained handwriting recognition. IEEE Trans. Pattern Analysis & Machine Intelligence 31(5), 855–868 (2009)
  • (15) Graves, A., Schmidhuber, J.: Offline handwriting recognition with multidimensional recurrent neural networks. In: Advances in neural information processing systems, pp. 545–552 (2009)
  • (16) Hinton, G., Deng, L., Yu, D., Dahl, G.E., Mohamed, A.r., Jaitly, N., Senior, A., Vanhoucke, V., Nguyen, P., Sainath, T.N., et al.: Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups. IEEE Signal processing magazine 29(6), 82–97 (2012)
  • (17) Hinton, G.E., Srivastava, N., Krizhevsky, A., Sutskever, I., Salakhutdinov, R.R.: Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580 (2012)
  • (18) Hochreiter, S., Schmidhuber, J.: Long short-term memory. Neural Computation 9(8), 1735–1780 (1997)
  • (19) Hu, J., Brown, M.K., Turin, W.: HMM based online handwriting recognition. IEEE Transactions on pattern analysis and machine intelligence 18(10), 1039–1045 (1996)
  • (20) Huang, B.Q., Zhang, Y., Kechadi, M.T.: Preprocessing techniques for online handwriting recognition. In: Intelligent Systems Design and Applications, 2007. ISDA 2007. Seventh International Conference on, pp. 793–800. IEEE (2007)
  • (21) Jaeger, S., Manke, S., Reichert, J., Waibel, A.: Online handwriting recognition: the NPen++ recognizer. International Journal on Document Analysis and Recognition 3(3), 169–180 (2001)
  • (22) Jäger, S., Liu, C., Nakagawa, M.: The state of the art in Japanese online handwriting recognition compared to techniques in western handwriting recognition. International Journal on Document Analysis and Recognition 6(2), 75–88 (2003)
  • (23) Jozefowicz, R., Zaremba, W., Sutskever, I.: An empirical exploration of recurrent network architectures. In: International Conference on Machine Learning, pp. 2342–2350 (2015)
  • (24) Keysers, D., Deselaers, T., Rowley, H., Wang, L.L., Carbune, V.: Multi-language online handwriting recognition. IEEE Trans. Pattern Analysis & Machine Intelligence 39(6), 1180–1194 (2017)
  • (25) Kim, J.H., Sin, B.: Online handwriting recognition. In: Handbook of Document Image Processing & Recognition, pp. 887–915. Springer-Verlag London (2014)
  • (26) Kingma, D.P., Ba, J.: Adam: A method for stochastic optimization. ICLR (2014)
  • (27) LeCun, Y., Bottou, L., andPatrick Haffner, Y.B.: Gradient-based learning applied to document recognition. In: Proceedings of the IEEE (1998)
  • (28) Liu, C., Yin, F., Wang, Q., Wang, D.: ICDAR 2011 Chinese handwriting recognition competition. In: ICDAR (2011)
  • (29) Liu, C.L., Yin, F., Wang, D.H., Wang, Q.F.: Online and offline handwritten Chinese character recognition: benchmarking on new databases. Pattern Recognition 46(1), 155–162 (2013)
  • (30) Liwicki, M., Bunke, H.: IAM-OnDB-an on-line English sentence database acquired from handwritten text on a whiteboard. In: ICDAR, pp. 956–961 (2005)
  • (31) Liwicki, M., Bunke, H., Pittman, J.A., Knerr, S.: Combining diverse systems for handwritten text line recognition. Mach. Vis. Appl. 22(1), 39–51 (2011)
  • (32)

    Mikolov, T., Sutskever, I., Chen, K., Corrado, G.S., Dean, J.: Distributed representations of words and phrases and their compositionality.

    In: Advances in neural information processing systems, pp. 3111–3119 (2013)
  • (33) Nguyen, H.T., Nguyen, C.T., Nakagawa, M.: ICFHR 2018 – competition on Vietnamese online handwritten text recognition using HANDS-VNOnDB (VOHTR2018). In: ICFHR (2018)
  • (34) Nuntawisuttiwong, T., Dejdumrong, N.: Approximating online handwritten image by bézier curve. In: CGIV (2012)
  • (35) Pham, V., Bluche, T., Kermorvant, C., Louradour, J.: Dropout improves recurrent neural networks for handwriting recognition. In: Frontiers in Handwriting Recognition (ICFHR), 2014 14th International Conference on, pp. 285–290. IEEE (2014)
  • (36) Pittman, J.A.: Handwriting recognition: Tablet PC text input. IEEE Computer 40(9), 49–54 (2007)
  • (37) Plamondon, R., Srihari, S.N.: Online and off-line handwriting recognition: a comprehensive survey. IEEE Transactions on pattern analysis and machine intelligence 22(1), 63–84 (2000)
  • (38) Prasad, M., Breiner, T., van Esch, D.: Mining training data for language modeling across the world’s languages. In: Proceedings of the 6th International Workshop on Spoken Language Technologies for Under-resourced Languages (SLTU 2018) (2018)
  • (39)

    Sainath, T.N., Kingsbury, B., Saon, G., Soltau, H., Mohamed, A.r., Dahl, G., Ramabhadran, B.: Deep convolutional neural networks for large-scale speech tasks.

    Neural Networks 64, 39–48 (2015)
  • (40) Sainath, T.N., Vinyals, O., Senior, A., Sak, H.: Convolutional, long short-term memory, fully connected deep neural networks. In: ICASSP (2015)
  • (41)

    Schuster, M., Paliwal, K.K.: Bidirectional recurrent neural networks.

    IEEE Transactions on Signal Processing 45(11), 2673–2681 (1997)
  • (42) Shivram, A., Ramaiah, C., Setlur, S., Govindaraju, V.: IBM_UB_1: A dual mode unconstrained English handwriting dataset. In: ICDAR (2013)
  • (43) Simonyan, K., Zisserman, A.: Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556 (2014)
  • (44) Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., Wojna, Z.: Rethinking the inception architecture for computer vision. In: Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 2818–2826 (2016)
  • (45) Waibel, A., Hanazawa, T., Hinton, G., Shikano, K., Lang, K.J.: Phoneme recognition using time-delay neural networks. IEEE Transactions on Acoustics, Speech, and Signal Processing (1989)
  • (46) Wang, T., Wu, D.J., Coates, A., Ng, A.Y.: End-to-end text recognition with convolutional neural networks. ICPR (2012)
  • (47) Yaeger, L., Webb, B., Lyon, R.: Combining neural networks and context-driven search for on-line, printed handwriting recognition in the Newton. AAAI AI Magazine (1998)
  • (48) Yang, Y., Liang, K., Xiao, X., Xie, Z., Jin, L., Sun, J., Zhou, W.: Accelerating and compressing LSTM based model for online handwritten Chinese character recognition. In: ICFHR (2018)
  • (49) Yin, F., Wang, Q.F., Zhang, X.Y., Liu, C.L.: Icdar 2013 Chinese handwriting recognition competition. In: Document Analysis and Recognition (ICDAR), 2013 12th International Conference on, pp. 1464–1470. IEEE (2013)
  • (50) Zhang, J., Du, J., Dai, L.: A GRU-based encoder-decoder approach with attention for online handwritten mathematical expression recognition. ArXiV (2017)
  • (51) Zhang, X., Yin, F., Zhang, Y., Liu, C., Bengio, Y.: Drawing and recognizing Chinese characters with recurrent neural network. ArXiV (2016)