Help in tesseract font training

Job ID: 37429412

Budget: ₹3,000 – ₹4,000 INR

Short summary of what I did:
I generated an artificial random data set that looks very close to the actual data. I made sure that all characters appeared, but special constellations and common similar letters appeared more often.
I chose the artificial generation route to have exactly 100% correct box data.

The training was carried out using the Python-based tool TessTrainGUI. This iteratively determines (probably with an SVM) the optimal constellation of Fetaure parameters.



It divides the total amount of GT data (>= 1000 rows) into a training set (T1 = 90% GT) and a validation set (V1 = 10%GT).

There are 2 possible ways to train: A completely new training and based on an existing one (best/deu.trainingdata).
With both options, the result converges very quickly towards < 1% BCER after 1000 cycles.

However, when I compare the training data set to real (i.e. not artificially generated) scans (V2), there are slight weaknesses and also differences in the results.
The newly trained font has high error rates, the training based on the German is sometimes very good, but not perfect. It turns out that training with very high cycles produces poor results, indicating overtraining.

The task that still needs to be solved:

1) Find the number of iterations ("checkpoint") that is ideal in terms of validation against the second test set V2
2) or you can find a better training data set

3) There are also small discrepancies regarding special characters.
The German script "deu", on which the training is based, contains umlauts such as "ä,ö,ü," etc. In the documents to be recognized, however, there are also characters such as Ø and characters from the Slavic area (Ž) (because due to an incorrect language setting when printing at that time). In validation these characters are recognized when I retrain them. However, they are NOT recognized if the training is based on "deu" (probably because they are not included in the document from deu)
It's not that important, but it would be interesting to know how to solve it.
Related categories: Python Machine Learning (ML) OCR Deep Learning