Class TesseractOCRParser

java.lang.Object
org.apache.tika.parser.AbstractExternalProcessParser
org.apache.tika.parser.ocr.TesseractOCRParser
All Implemented Interfaces:
Serializable, Initializable, Parser

public class TesseractOCRParser extends AbstractExternalProcessParser implements Initializable
TesseractOCRParser powered by tesseract-ocr engine. To enable this parser, create a TesseractOCRConfig object and pass it through a ParseContext. Tesseract-ocr must be installed and on system path or the path to its root folder must be provided:

TesseractOCRConfig config = new TesseractOCRConfig();
//Needed if tesseract is not on system path
config.setTesseractPath(tesseractFolder);
parseContext.set(TesseractOCRConfig.class, config);

See Also:
  • Field Details

    • TESS_META

      public static final String TESS_META
      See Also:
    • IMAGE_ROTATION

      public static final Property IMAGE_ROTATION
    • IMAGE_MAGICK

      public static final Property IMAGE_MAGICK
    • PSM0_PAGE_NUMBER

      public static final Property PSM0_PAGE_NUMBER
    • PSM0_ORIENTATION

      public static final Property PSM0_ORIENTATION
    • PSM0_ROTATE

      public static final Property PSM0_ROTATE
    • PSM0_ORIENTATION_CONFIDENCE

      public static final Property PSM0_ORIENTATION_CONFIDENCE
    • PSM0_SCRIPT

      public static final Property PSM0_SCRIPT
    • PSM0_SCRIPT_CONFIDENCE

      public static final Property PSM0_SCRIPT_CONFIDENCE
  • Constructor Details

    • TesseractOCRParser

      public TesseractOCRParser()
  • Method Details

    • getImageMagickProg

      public static String getImageMagickProg()
    • getTesseractProg

      public static String getTesseractProg()
    • getSupportedTypes

      public Set<MediaType> getSupportedTypes(ParseContext context)
      Description copied from interface: Parser
      Returns the set of media types supported by this parser when used with the given parse context.
      Specified by:
      getSupportedTypes in interface Parser
      Parameters:
      context - parse context
      Returns:
      immutable set of media types
    • hasTesseract

      public boolean hasTesseract() throws TikaConfigException
      Throws:
      TikaConfigException
    • parse

      public void parse(Image image, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException
      Throws:
      IOException
      SAXException
      TikaException
    • parse

      public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext parseContext) throws IOException, SAXException, TikaException
      Description copied from interface: Parser
      Parses a document stream into a sequence of XHTML SAX events. Fills in related document metadata in the given metadata object.

      The given document stream is consumed but not closed by this method. The responsibility to close the stream remains on the caller.

      Information about the parsing context can be passed in the context parameter. See the parser implementations for the kinds of context information they expect.

      Specified by:
      parse in interface Parser
      Parameters:
      stream - the document stream (input)
      handler - handler for the XHTML SAX events (output)
      metadata - document metadata (input and output)
      parseContext - parse context
      Throws:
      IOException - if the document stream could not be read
      SAXException - if the SAX events could not be processed
      TikaException - if the document could not be parsed
    • initialize

      public void initialize(Map<String,Param> params) throws TikaConfigException
      Specified by:
      initialize in interface Initializable
      Parameters:
      params - params to use for initialization
      Throws:
      TikaConfigException
    • checkInitialization

      public void checkInitialization(InitializableProblemHandler problemHandler) throws TikaConfigException
      Specified by:
      checkInitialization in interface Initializable
      Parameters:
      problemHandler - if there is a problem and no custom initializableProblemHandler has been configured via Initializable parameters, this is called to respond.
      Throws:
      TikaConfigException
    • getLangs

      public Set<String> getLangs()
    • hasWarned

      protected boolean hasWarned()
    • warn

      protected void warn()
    • getTesseractPath

      public String getTesseractPath()
    • setTesseractPath

      @Field public void setTesseractPath(String tesseractPath)
      Set the path to the Tesseract executable's directory, needed if it is not on system path.

      Note that if you set this value, it is highly recommended that you also set the path to (and including) the 'tessdata' folder using setTessdataPath(java.lang.String).

    • getTessdataPath

      public String getTessdataPath()
    • setTessdataPath

      @Field public void setTessdataPath(String tessdataPath)
      Set the path to the 'tessdata' folder, which contains language files and config files. In some cases (such as on Windows), this folder is found in the Tesseract installation, but in other cases (such as when Tesseract is built from source), it may be located elsewhere.

      Make sure to include the 'tessdata' folder in this path: '/blah/de/blah/tessdata'

    • getImageMagickPath

      public String getImageMagickPath()
    • setImageMagickPath

      @Field public void setImageMagickPath(String imageMagickPath)
      Set the path to the ImageMagick executable directory, needed if it is not on system path.
      Parameters:
      imageMagickPath - to ImageMagick executable directory.
    • setOtherTesseractSettings

      @Field public void setOtherTesseractSettings(List<String> settings) throws TikaConfigException
      Throws:
      TikaConfigException
    • getOtherTesseractSettings

      public List<String> getOtherTesseractSettings()
    • setSkipOCR

      @Field public void setSkipOCR(boolean skipOCR)
    • isSkipOCR

      public boolean isSkipOCR()
    • setLanguage

      @Field public void setLanguage(String language)
    • getLanguage

      public String getLanguage()
    • setPageSegMode

      @Field public void setPageSegMode(String pageSegMode)
    • getPageSegMode

      public String getPageSegMode()
    • setMaxFileSizeToOcr

      @Field public void setMaxFileSizeToOcr(long maxFileSizeToOcr)
    • getMaxFileSizeToOcr

      public long getMaxFileSizeToOcr()
    • setMinFileSizeToOcr

      @Field public void setMinFileSizeToOcr(long minFileSizeToOcr)
    • getMinFileSizeToOcr

      public long getMinFileSizeToOcr()
    • setTimeout

      @Field public void setTimeout(int timeout)
      Set default timeout in seconds. This can be overridden per parse with TikaTaskTimeout sent in via the ParseContext at parse time.
      Parameters:
      timeout -
    • getTimeout

      public int getTimeout()
    • setOutputType

      @Field public void setOutputType(String outputType)
    • getOutputType

      public String getOutputType()
    • setPreserveInterwordSpacing

      @Field public void setPreserveInterwordSpacing(boolean preserveInterwordSpacing)
    • isPreserveInterwordSpacing

      public boolean isPreserveInterwordSpacing()
    • setEnableImagePreprocessing

      @Field public void setEnableImagePreprocessing(boolean enableImagePreprocessing)
    • isEnableImagePreprocessing

      public boolean isEnableImagePreprocessing()
    • setDensity

      @Field public void setDensity(int density)
    • getDensity

      public int getDensity()
    • setDepth

      @Field public void setDepth(int depth)
    • getDepth

      public int getDepth()
    • setColorspace

      @Field public void setColorspace(String colorspace)
    • getColorspace

      public String getColorspace()
    • setFilter

      @Field public void setFilter(String filter)
    • getFilter

      public String getFilter()
    • setResize

      @Field public void setResize(int resize)
    • getResize

      public int getResize()
    • setApplyRotation

      @Field public void setApplyRotation(boolean applyRotation)
    • isApplyRotation

      public boolean isApplyRotation()
    • setInlineContent

      @Field public void setInlineContent(boolean inlineContent)
    • isInlineContent

      public boolean isInlineContent()
    • setPreloadLangs

      @Field public void setPreloadLangs(boolean preloadLangs)
      If set to true and if tesseract is found, this will load the langs that result from --list-langs. At parse time, the parser will verify that tesseract has the requested lang available.

      If set to false (the default) and tesseract is found, if a user requests a language that tesseract does not have data for, a TikaException will be thrown with tesseract's native exception message, which is a bit less readable.

      Parameters:
      preloadLangs -
    • isPreloadLangs

      public boolean isPreloadLangs()
    • getDefaultConfig

      public TesseractOCRConfig getDefaultConfig()