Summary
EntropiaOrme reads the game’s on-screen data with an OCR model to feed its analytics. By benchmarking 28 OCR models against images taken from the game’s UI, OpenOCR SVTRv2-mobile was chosen: an Apache-2.0 model of about 24 MB that runs at about 3.5 ms per image, with 100% effective accuracy for this task. The evaluation dataset, harness, and full per-model results across all the tested hardware are in the public benchmark repository.
Problem statement
Entropia Universe outputs most of the data needed to run analytics to a log file (chat.log). Some values, however, are only present in the game UI; therefore, this article covers a study on using OCR models to parse that data. Here are some examples of the type of data needing to be processed by OCR:
























Methodology
The goal is finding the lightest model that reliably parses the game UI. To measure that tradeoff, 28 models ranging from small recognisers to large vision-language models were selected for testing.
The test set consists of 594 text and numeric images from the game UI with human-verified labels. For text values, the vocabulary is closed, which means that slightly misread names can be fuzzy matched (“Aglity” to “Agility”). Therefore, “effective accuracy” is reported (percentage of correct/recoverable predictions after postprocessing). Each model was also timed per image, with the reported latency measured on an Nvidia A1000 machine.1
Results
Accuracy and latency are plotted together below, with the desirable corner at the top left; the same figures are available as a table.
| # | Model | Family | Eff. acc. | Latency (ms/img) | |
|---|---|---|---|---|---|
| Batched | Serial | ||||
| 1 | openocr_svtrv2 | Lightweight CTC | 100.0% | 3.8 | 56.9 |
| 2 | rapidocr | Lightweight CTC | 100.0% | 9.3 | 34.7 |
| 3 | surya | Pipeline / classic | 100.0% | 126.9 | 338.2 |
| 4 | onnxtr_master | OnnxTR | 96.8% | 54.3 | 143.7 |
| 5 | onnxtr_sar | OnnxTR | 96.1% | 10.0 | 124.7 |
| 6 | onnxtr_viptr | OnnxTR | 95.8% | 4.9 | 73.6 |
| 7 | ppocrv5_mobile | Lightweight CTC | 95.6% | 9.5 | 36.5 |
| 8 | onnxtr_parseq | OnnxTR | 95.5% | 7.9 | 30.8 |
| 9 | onnxtr_crnn_mobile | OnnxTR | 94.6% | 3.3 | 58.8 |
| 10 | ppocrv5_latin_mobile | Lightweight CTC | 91.1% | 7.7 | 33.3 |
| 11 | ppocr | Lightweight CTC | 86.7% | 10.3 | 34.4 |
| 12 | ppocrv5_en_mobile | Lightweight CTC | 86.7% | 7.7 | 34.7 |
| 13 | mmocr_robustscanner | MMOCR | 86.0% | n/a | 113.9 |
| 14 | tesseract | Pipeline / classic | 84.0% | n/a | 83.7 |
| 15 | onnxtr_vitstr | OnnxTR | 83.5% | 5.8 | 15.3 |
| 16 | ppocrv5_server | Lightweight CTC | 81.8% | 18.6 | 93.8 |
| 17 | easyocr | Pipeline / classic | 71.0% | n/a | 17.3 |
| 18 | florence2_large | Document / VLM | 65.0% | n/a | 341.7 |
| 19 | trocr | Transformer | 56.7% | n/a | 123.2 |
| 20 | trocr_large_printed | Transformer | 55.4% | n/a | 425.9 |
| 21 | got_ocr2 | Document / VLM | 51.5% | n/a | 8,380 |
| 22 | florence2_base | Document / VLM | 46.0% | n/a | 144.5 |
| 23 | mmocr_satrn | MMOCR | 41.9% | n/a | 460.6 |
| 24 | mmocr_abinet | MMOCR | 34.5% | n/a | 72.8 |
| 25 | nougat | Document / VLM | 7.1% | n/a | 1,234 |
| 26 | donut control | Document / VLM | 0.0% | n/a | 1,014 |
dots_ocr | Document / VLM | OOM | n/a | n/a | |
kosmos25 | Document / VLM | OOM | n/a | n/a | |
dots_ocr and kosmos25 ran out of memory on the 4 GB card. donut is carried as a control.The primary finding is lightweight models being both the fastest and most accurate, therefore not being a compromise for this simple task. The heavier models bought neither accuracy nor speed, where the dominant failure mode is domain mismatch. Model size was not a predictor of accuracy on this clean, small-text task.
Two models are viable to bundle: OpenOCR SVTRv2 and RapidOCR, both at 100% effective accuracy under an Apache-2.0 licence. Surya, the third at 100%, is CUDA-only. With accuracy settled between the remaining two, the choice becomes a latency question, measured across every configuration.
| Configuration | SVTRv2 | RapidOCR |
|---|---|---|
| CPU (7500F), serial | 12.9 ms | 8.9 ms |
| CPU (7500F), batched | 11.2 ms | 7.0 ms |
| DirectML (RX 6750 XT), serial | 15.9 ms | n/a |
| DirectML (RX 6750 XT), batched | 3.5 ms | n/a |
| CUDA (A1000), serial | 56.9 ms | 34.7 ms |
| CUDA (A1000), batched | 3.8 ms | 9.3 ms |
When processing images serially, RapidOCR on the CPU is the quicker of the two. When batched, OpenOCR SVTRv2 on the GPU reads about 286 cells per second against RapidOCR’s 142, roughly twice the throughput.
Conclusion
EntropiaOrme reads a panel’s cells in a batch, and batched on the GPU OpenOCR SVTRv2 is the fastest option at about 3.5 ms per image. Further, Entropia Universe is a CPU-bound game, which makes running the OCR model on GPU more desirable so as not to starve the game. Therefore, OpenOCR SVTRv2 is the one EntropiaOrme bundles.
Footnotes
-
Testing hardware was limited to two machines: a Windows machine with a Ryzen 5 7500F CPU and an AMD GPU (RX 6750 XT, DirectML), and a Linux machine with an Nvidia GPU (A1000, CUDA). Refer to the benchmark repository for full results across all configurations. ↩