Class TesseractOCRParser

  • All Implemented Interfaces:
    Serializable, org.apache.tika.config.Initializable, org.apache.tika.parser.Parser

    public class TesseractOCRParser
    extends org.apache.tika.parser.AbstractExternalProcessParser
    implements org.apache.tika.config.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:
    Serialized Form
    • Field Detail

      • IMAGE_ROTATION

        public static final org.apache.tika.metadata.Property IMAGE_ROTATION
      • IMAGE_MAGICK

        public static final org.apache.tika.metadata.Property IMAGE_MAGICK
      • PSM0_PAGE_NUMBER

        public static final org.apache.tika.metadata.Property PSM0_PAGE_NUMBER
      • PSM0_ORIENTATION

        public static final org.apache.tika.metadata.Property PSM0_ORIENTATION
      • PSM0_ROTATE

        public static final org.apache.tika.metadata.Property PSM0_ROTATE
      • PSM0_ORIENTATION_CONFIDENCE

        public static final org.apache.tika.metadata.Property PSM0_ORIENTATION_CONFIDENCE
      • PSM0_SCRIPT

        public static final org.apache.tika.metadata.Property PSM0_SCRIPT
      • PSM0_SCRIPT_CONFIDENCE

        public static final org.apache.tika.metadata.Property PSM0_SCRIPT_CONFIDENCE
    • Constructor Detail

      • TesseractOCRParser

        public TesseractOCRParser()
    • Method Detail

      • getImageMagickProg

        public static String getImageMagickProg()
      • getTesseractProg

        public static String getTesseractProg()
      • getSupportedTypes

        public Set<org.apache.tika.mime.MediaType> getSupportedTypes​(org.apache.tika.parser.ParseContext context)
        Specified by:
        getSupportedTypes in interface org.apache.tika.parser.Parser
      • hasTesseract

        public boolean hasTesseract()
                             throws org.apache.tika.exception.TikaConfigException
        Throws:
        org.apache.tika.exception.TikaConfigException
      • parse

        public void parse​(InputStream stream,
                          ContentHandler handler,
                          org.apache.tika.metadata.Metadata metadata,
                          org.apache.tika.parser.ParseContext parseContext)
                   throws IOException,
                          SAXException,
                          org.apache.tika.exception.TikaException
        Specified by:
        parse in interface org.apache.tika.parser.Parser
        Throws:
        IOException
        SAXException
        org.apache.tika.exception.TikaException
      • initialize

        public void initialize​(Map<String,​org.apache.tika.config.Param> params)
                        throws org.apache.tika.exception.TikaConfigException
        Specified by:
        initialize in interface org.apache.tika.config.Initializable
        Throws:
        org.apache.tika.exception.TikaConfigException
      • checkInitialization

        public void checkInitialization​(org.apache.tika.config.InitializableProblemHandler problemHandler)
                                 throws org.apache.tika.exception.TikaConfigException
        Specified by:
        checkInitialization in interface org.apache.tika.config.Initializable
        Throws:
        org.apache.tika.exception.TikaConfigException
      • 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 org.apache.tika.exception.TikaConfigException
        Throws:
        org.apache.tika.exception.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()
      • 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()