A 0.5B model may not be that great out of the box but there's a lot of oppertunity if it's responsive to finetuning.
For these applications, you don't need a super smart model, it just needs to give out hints. For completion, the user can just not use the suggestion if it is not what he wants, for compression, it will just lower the compression ratio a bit, and for transcription, it will only be used as disambiguation. For all these applications, a LLM is not needed, but it can improve the results.
Note that for OCR/transcription, I am a bit weary of engines that are a bit too smart, as a lot of them are today, and LLMs go in this direction. The results are often objectively better, that is more words are properly transcribed, but for those that are not, it is often subtly wrong, that is, it makes sense, but it is not the right transcription. Whereas with nonsense, we know it can't be trusted and we act accordingly, also, people can be quite good at filling the blanks themselves. It results in more effort, but maybe better understanding in the end.