Index: tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
===================================================================
--- tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java	(revision 1634089)
+++ tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java	(working copy)
@@ -85,6 +85,22 @@
         return map;
     }
 
+    public List<Parser> getAllParsersFor(ParseContext context, MediaType type) {
+        List<Parser> result = new ArrayList<Parser>();
+        if (parsers.size() == 1 && parsers.get(0) instanceof DefaultParser) {
+            DefaultParser defaultParser = (DefaultParser) parsers.get(0);
+            result.addAll(defaultParser.getAllParsersFor(context, type));
+        }
+        else {
+            for (Parser parser : parsers) {
+                if (parser.getSupportedTypes(context).contains(registry.normalize(type))) {
+                    result.add(parser);
+                }
+            }
+        }
+        return result;
+    }
+
     /**
      * Utility method that goes through all the component parsers and finds
      * all media types for which more than one parser declares support. This
Index: tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java
===================================================================
--- tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java	(revision 1634089)
+++ tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java	(working copy)
@@ -16,6 +16,7 @@
  */
 package org.apache.tika.parser;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -110,4 +111,23 @@
         return map;
     }
 
+    @Override
+    public List<Parser> getAllParsersFor(ParseContext context, MediaType type) {
+        List<Parser> result = new ArrayList<Parser>();
+
+        if (loader != null) {
+            MediaTypeRegistry registry = getMediaTypeRegistry();
+            MediaType normalizedType = registry.normalize(type);
+
+            List<Parser> parsers = getDefaultParsers(loader);
+
+            for (Parser parser : parsers) {
+                if (parser.getSupportedTypes(context).contains(normalizedType) && !result.contains(parser)) {
+                    result.add(parser);
+                }
+            }
+        }
+        return result;
+    }
+
 }
Index: tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java	(revision 1634089)
+++ tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java	(working copy)
@@ -26,7 +26,6 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -46,13 +45,11 @@
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
+import org.apache.tika.parser.AutoDetectParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.external.ExternalParser;
-import org.apache.tika.parser.image.ImageParser;
-import org.apache.tika.parser.image.PSDParser;
-import org.apache.tika.parser.image.TiffParser;
-import org.apache.tika.parser.jpeg.JpegParser;
+import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -135,6 +132,9 @@
   public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
       throws IOException, SAXException, TikaException {
 
+    MediaType type = MediaType.parse(metadata.get(Metadata.CONTENT_TYPE));
+    Parser otherParser = getOtherParser(context, type);
+
     TesseractOCRConfig config = context.get(TesseractOCRConfig.class);
     if (config == null)
       config = new TesseractOCRConfig();
@@ -153,6 +153,10 @@
       File input = tikaStream.getFile();
       long size = tikaStream.getLength();
 
+      // Parse with the default other image parser to get Metadata, but discard all content
+      // since other image parsers don't add content. The handler will be filled later by this Parser.
+      if (otherParser != null) otherParser.parse(new FileInputStream(input), new BodyContentHandler(), metadata, context);
+
       if (size >= config.getMinFileSizeToOcr() && size <= config.getMaxFileSizeToOcr()) {
 
         output = tmp.createTemporaryFile();
@@ -174,6 +178,24 @@
     }
   }
 
+    /**
+     * Get any Parser for the given type that is not a TesseractOCRParser.
+     *
+     * @param context The ParseContext to search in.
+     * @param type The MediaType to find a Parser for.
+     * @return A Parser that supports the given type, but isn't a TesseractOCRParser.
+     */
+  private Parser getOtherParser(ParseContext context, MediaType type) {
+    Parser otherParser = null;
+    List<Parser> otherImageParsers = new AutoDetectParser().getAllParsersFor(context, type);
+    for (Parser p : otherImageParsers) {
+      if (!(p instanceof TesseractOCRParser)) {
+        otherParser = p;
+      }
+    }
+    return otherParser;
+  }
+
   /**
    * Run external tesseract-ocr process.
    * 
