Ohne die genauen Anforderungen von tesseract zu kennen, sage ich 16. Mehr dürfte keinen Sinn machen, da das Umschalten zwischen Prozessen innerhalb eines Threads ziemlich aufwendig ist und entsprechend Performance kostet. Beim Hyperthreading wird versucht die Ausführung eines 2. Threads in die Wartezyklen des 1. Threads zu schieben (Hardwareseitig). Dadurch erhöht sich die Gesamtperformance, aber die Performance der einzelnen Prozesse sinkt. Es lässt sich nicht genau sagen, wieviel man an Performance gewinnt - Faktor 2 ist es aber auf keinen Fall. Bei nur 8 parallelen Prozessen (ohne Hyperthreading) wird jeder einzelne deutlich schneller fertig, aber halt nur 8 gleichzeitig.
Das gilt generell für die Bearbeitung mehrerer Prozesse. Ein Programm könnte auch 16 Prozesse für die Bearbeitung einer einzelnen Datei starten und dafür die Dateien eine nach der anderen abarbeiten