# Lexically Aware Semi-Supervised Learning for OCR Post-Correction

arXiv: https://arxiv.org/abs/2111.02622 · HTML: https://mlsanity.com/paper/2111.02622/

## Key facts

- Cited by 12 papers in the map (data through 14 Oct 2026).
- Builds on 23 of its 56 references that are in the map.
- First posted on arXiv 4 Nov 2021.

## Builds on (most cited first, 23 of 23)

- [Neural Machine Translation by Jointly Learning to Align and Translate](https://mlsanity.com/paper/1409.0473/) (2014)
- [Get To The Point: Summarization with Pointer-Generator Networks](https://mlsanity.com/paper/1704.04368/) (2017)
- [The State and Fate of Linguistic Diversity and Inclusion in the NLP World](https://mlsanity.com/paper/2004.09095/) (2020)
- [Rethinking Pre-training and Self-training](https://mlsanity.com/paper/2006.06882/) (2020)
- [Lexically Constrained Decoding for Sequence Generation Using Grid Beam Search](https://mlsanity.com/paper/1704.07138/) (2017)
- [Incorporating Copying Mechanism in Sequence-to-Sequence Learning](https://mlsanity.com/paper/1603.06393/) (2016)
- [Semi-supervised Sequence Learning](https://mlsanity.com/paper/1511.01432/) (2015)
- [Fast Lexically Constrained Decoding with Dynamic Beam Allocation for Neural Machine Translation](https://mlsanity.com/paper/1804.06609/) (2018)
- [Revisiting Self-Training for Neural Sequence Generation](https://mlsanity.com/paper/1909.13788/) (2019)
- [Modeling Coverage for Neural Machine Translation](https://mlsanity.com/paper/1601.04811/) (2016)
- [Guiding Neural Machine Translation with Retrieved Translation Pieces](https://mlsanity.com/paper/1804.02559/) (2018)
- [Unsupervised Pretraining for Sequence to Sequence Learning](https://mlsanity.com/paper/1611.02683/) (2016)
- [Incorporating Discrete Translation Lexicons into Neural Machine Translation](https://mlsanity.com/paper/1606.02006/) (2016)
- [OCR Post Correction for Endangered Language Texts](https://mlsanity.com/paper/2011.05402/) (2020)
- [A Scalable Handwritten Text Recognition System](https://mlsanity.com/paper/1904.09150/) (2019)
- [DyNet: The Dynamic Neural Network Toolkit](https://mlsanity.com/paper/1701.03980/) (2017)
- [Incorporating Structural Alignment Biases into an Attentional Neural Translation Model](https://mlsanity.com/paper/1601.01085/) (2016)
- [Sequence-to-Label Script Identification for Multilingual OCR](https://mlsanity.com/paper/1708.04671/) (2017)
- [Upcycle Your OCR: Reusing OCRs for Post-OCR Text Correction in Romanised Sanskrit](https://mlsanity.com/paper/1809.02147/) (2018)
- [From the Paft to the Fiiture: a Fully Automatic NMT and Word Embeddings Method for OCR Post-Correction](https://mlsanity.com/paper/1910.05535/) (2019)
- [Still not there? Comparing Traditional Sequence-to-Sequence Models to Encoder-Decoder Neural Networks on Monotone String Translation Tasks](https://mlsanity.com/paper/1610.07796/) (2016)
- [MFST: A Python OpenFST Wrapper With Support for Custom Semirings and Jupyter Notebooks](https://mlsanity.com/paper/2012.03437/) (2020)
- [Comparative Error Analysis in Neural and Finite-state Models for Unsupervised Character-level Transduction](https://mlsanity.com/paper/2106.12698/) (2021)

## Built on by (most cited first, 12 of 12)

- [Neuro-Symbolic Language Modeling with Automaton-augmented Retrieval](https://mlsanity.com/paper/2201.12431/) (2022)
- [XTREME-UP: A User-Centric Scarce-Data Benchmark for Under-Represented Languages](https://mlsanity.com/paper/2305.11938/) (2023)
- [A Benchmark and Dataset for Post-OCR text correction in Sanskrit](https://mlsanity.com/paper/2211.07980/) (2022)
- [From FreEM to D'AlemBERT: a Large Corpus and a Language Model for Early Modern French](https://mlsanity.com/paper/2202.09452/) (2022)
- [User-Centric Evaluation of OCR Systems for Kwak'wala](https://mlsanity.com/paper/2302.13410/) (2023)
- [Lacuna Reconstruction: Self-supervised Pre-training for Low-Resource Historical Document Transcription](https://mlsanity.com/paper/2112.08692/) (2021)
- [RoundTripOCR: A Data Generation Technique for Enhancing Post-OCR Error Correction in Low-Resource Devanagari Languages](https://mlsanity.com/paper/2412.15248/) (2024)
- [Algorithms for Acyclic Weighted Finite-State Automata with Failure Arcs](https://mlsanity.com/paper/2301.06862/) (2023)
- [Noisy Parallel Data Alignment](https://mlsanity.com/paper/2301.09685/) (2023)
- [Data Generation for Post-OCR correction of Cyrillic handwriting](https://mlsanity.com/paper/2311.15896/) (2023)
- [Developing a Mixed-Methods Pipeline for Community-Oriented Digitization of Kwak'wala Legacy Texts](https://mlsanity.com/paper/2506.01775/) (2025)
- [Combining Synthetic and Real Data for Low-Resource Historical OCR: A Manchu Case Study](https://mlsanity.com/paper/2609.11495/) (2026)

## Abstract (arXiv)

Much of the existing linguistic data in many languages of the world is locked away in non-digitized books and documents. Optical character recognition (OCR) can be used to produce digitized text, and previous work has demonstrated the utility of neural post-correction methods that improve the results of general-purpose OCR systems on recognition of less-well-resourced languages. However, these methods rely on manually curated post-correction data, which are relatively scarce compared to the non-annotated raw images that need to be digitized. In this paper, we present a semi-supervised learning method that makes it possible to utilize these raw images to improve performance, specifically through the use of self-training, a technique where a model is iteratively trained on its own outputs. In addition, to enforce consistency in the recognized vocabulary, we introduce a lexically-aware decoding method that augments the neural post-correction model with a count-based language model constructed from the recognized texts, implemented using weighted finite-state automata (WFSA) for efficient and effective decoding. Results on four endangered languages demonstrate the utility of the proposed method, with relative error reductions of 15-29%, where we find the combination of self-training and lexically-aware decoding essential for achieving consistent improvements. Data and code are available at https://shrutirij.github.io/ocr-el/.
