diff --git a/api/tesseractmain.cpp b/api/tesseractmain.cpp
index 1246bcbbe6..16f03c6eca 100644
--- a/api/tesseractmain.cpp
+++ b/api/tesseractmain.cpp
@@ -286,7 +286,8 @@ void ParseArgs(const int argc, char** argv,
 void PreloadRenderers(tesseract::TessBaseAPI* api,
           tesseract::PointerVector<tesseract::TessResultRenderer>* renderers,
           tesseract::PageSegMode pagesegmode,
-          const char* outputbase) {
+          const char* outputbase,
+          bool in_training_mode) {
   if (pagesegmode == tesseract::PSM_OSD_ONLY) {
     renderers->push_back(new tesseract::TessOsdRenderer(outputbase));
   } else {
@@ -315,15 +316,8 @@ void PreloadRenderers(tesseract::TessBaseAPI* api,
       renderers->push_back(new tesseract::TessBoxTextRenderer(outputbase));
     }
 
-    // disable text renderer when using one of these configs:
-    // ambigs.train, box.train, box.train.stderr, linebox, rebox
-    bool disable_text_renderer =
-          (api->GetBoolVariable("tessedit_ambigs_training", &b) && b) ||
-          (api->GetBoolVariable("tessedit_resegment_from_boxes", &b) && b) ||
-          (api->GetBoolVariable("tessedit_make_boxes_from_boxes", &b) && b);
-
     api->GetBoolVariable("tessedit_create_txt", &b);
-    if (b || (renderers->empty() && !disable_text_renderer)) {
+    if (b || (renderers->empty() && !in_training_mode)) {
       renderers->push_back(new tesseract::TessTextRenderer(outputbase));
     }
   }
@@ -419,9 +413,19 @@ int main(int argc, char **argv) {
     exit(ret_val);
   }
 
+  // set in_training_mode to true when using one of these configs:
+  // ambigs.train, box.train, box.train.stderr, linebox, rebox
+  bool b = false;
+  bool in_training_mode =
+        (api.GetBoolVariable("tessedit_ambigs_training", &b) && b) ||
+        (api.GetBoolVariable("tessedit_resegment_from_boxes", &b) && b) ||
+        (api.GetBoolVariable("tessedit_make_boxes_from_boxes", &b) && b);
+
   tesseract::PointerVector<tesseract::TessResultRenderer> renderers;
-  PreloadRenderers(&api, &renderers, pagesegmode, outputbase);
-  if (!renderers.empty()) {
+  PreloadRenderers(&api, &renderers, pagesegmode, outputbase,
+                               in_training_mode);
+
+  if (!renderers.empty() || in_training_mode) {
     bool succeed = api.ProcessPages(image, NULL, 0, renderers[0]);
     if (!succeed) {
       fprintf(stderr, "Error during processing.\n");