Package: unstructured.pytesseract
Python-tesseract is an optical character recognition (OCR) tool for python.
That is, it will recognize and “read” the text embedded in images.Python-tesseract is a wrapper forGoogle’s Tesseract-OCR Engine.
It is also useful as a stand-alone invocation script to tesseract, as it can read all image types
supported by the Pillow and Leptonica imaging libraries, including jpeg, png, gif, bmp, tiff,
and others. Additionally, if used as a script, Python-tesseract will print the recognized
text instead of writing it to a file.USAGEQuickstartNote: Test images are located in thetests/datafolder of the Git repo.Library usage:fromPILimportImageimportpytesseract# If you don't have tesseract executable in your PATH, include the following:pytesseract.pytesseract.tesseract_cmd=r'<full_path_to_your_tesseract_executable>'# Example tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'# Simple image to stringprint(pytesseract.image_to_string(Image.open('test.png')))# In order to bypass the image conversions of pytesseract, just use relative or absolute image path# NOTE: In this case you should provide tesseract supported images or tesseract will return errorprint(pytesseract.image_to_string('test.png'))# List of available languagesprint(pytesseract.get_languages(config=''))# French text image to stringprint(pytesseract.image_to_string(Image.open('test-european.jpg'),lang='fra'))# Batch processing with a single file containing the list of multiple image file pathsprint(pytesseract.image_to_string('images.txt'))# Timeout/terminate the tesseract job after a period of timetry:print(pytesseract.image_to_string('test.jpg',timeout=2))# Timeout after 2 secondsprint(pytesseract.image_to_string('test.jpg',timeout=0.5))# Timeout after half a secondexceptRuntimeErrorastimeout_error:# Tesseract processing is terminatedpass# Get bounding box estimatesprint(pytesseract.image_to_boxes(Image.open('test.png')))# Get verbose data including boxes, confidences, line and page numbersprint(pytesseract.image_to_data(Image.open('test.png')))# Get information about orientation and script detectionprint(pytesseract.image_to_osd(Image.open('test.png')))# Get a searchable PDFpdf=pytesseract.image_to_pdf_or_hocr('test.png',extension='pdf')withopen('test.pdf','w+b')asf:f.write(pdf)# pdf type is bytes by default# Get HOCR outputhocr=pytesseract.image_to_pdf_or_hocr('test.png',extension='hocr')# Get ALTO XML outputxml=pytesseract.image_to_alto_xml('test.png')# getting multiple types of output with one call to save compute time# currently supports mix and match of the following: txt, pdf, hocr, box, tsvtext,boxes=pytesseract.run_and_get_multiple_output('test.png',extensions=['txt','box'])Support for OpenCV image/NumPy array objectsimportcv2img_cv=cv2.imread(r'/<path_to_image>/digits.png')# By default OpenCV stores images in BGR format and since pytesseract assumes RGB format,# we need to convert from BGR to RGB format/mode:img_rgb=cv2.cvtColor(img_cv,cv2.COLOR_BGR2RGB)print(pytesseract.image_to_string(img_rgb))# ORimg_rgb=Image.frombytes('RGB',img_cv.shape[:2],img_cv,'raw','BGR',0,0)print(pytesseract.image_to_string(img_rgb))If you need custom configuration likeoem/psm, use theconfigkeyword.# Example of adding any additional optionscustom_oem_psm_config=r'--oem 3 --psm 6'pytesseract.image_to_string(image,config=custom_oem_psm_config)# Example of using pre-defined tesseract config file with optionscfg_filename='words'pytesseract.run_and_get_output(image,extension='txt',config=cfg_filename)Add the following config, if you have tessdata error like: “Error opening data file…”# Example config: r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'# It's important to add double quotes around the dir path.tessdata_dir_config=r'--tessdata-dir "<replace_with_your_tessdata_dir_path>"'pytesseract.image_to_string(image,lang='chi_sim',config=tessdata_dir_config)Functionsget_languagesReturns all currently supported languages by Tesseract OCR.get_tesseract_versionReturns the Tesseract version installed in the system.image_to_stringReturns unmodified output as string from Tesseract OCR processingimage_to_boxesReturns result containing recognized characters and their box boundariesimage_to_dataReturns result containing box boundaries, confidences, and other information. Requires Tesseract 3.05+. For more information, please check theTesseract TSV documentationimage_to_osdReturns result containing information about orientation and script detection.image_to_alto_xmlReturns result in the form of Tesseract’s ALTO XML format.run_and_get_outputReturns the raw output from Tesseract OCR. Gives a bit more control over the parameters that are sent to tesseract.Parametersimage_to_data(image, lang=None,config='',nice=0, output_type=Output.STRING, timeout=0, pandas_config=None)imageObject or String - either PIL Image, NumPy array or file path of the image to be processed by Tesseract. If you pass object instead of file path, pytesseract will implicitly convert the image toRGB mode.langString - Tesseract language code string. Defaults toengif not specified! Example for multiple languages:lang='eng+fra'configString - Anyadditional custom configuration flagsthat are not available via the pytesseract function. For example:config='--psm6'niceInteger - modifies the processor priority for the Tesseract run. Not supported on Windows. Nice adjusts the niceness of unix-like processes.output_typeClass attribute - specifies the type of the output, defaults tostring.  For the full list of all supported types, please check the definition ofpytesseract.Outputclass.timeoutInteger or Float - duration in seconds for the OCR processing, after which, pytesseract will terminate and raise RuntimeError.pandas_configDict - only for theOutput.DATAFRAMEtype. Dictionary with custom arguments forpandas.read_csv. Allows you to customize the output ofimage_to_data.CLI usage:pytesseract[-llang]image_fileINSTALLATIONPrerequisites:Python-tesseract requires Python 3.6+You will need the Python Imaging Library (PIL) (or thePillowfork).
Please check thePillow documentationto know the basic Pillow installation.InstallGoogle Tesseract OCR(additional info how to install the engine on Linux, Mac OSX and Windows).
You must be able to invoke the tesseract command astesseract. If this
isn’t the case, for example because tesseract isn’t in your PATH, you will
have to change the “tesseract_cmd” variablepytesseract.pytesseract.tesseract_cmd.
Under Debian/Ubuntu you can use the packagetesseract-ocr.
For Mac OS users. please install homebrew packagetesseract.Note:In some rare cases, you might need to additionally installtessconfigsandconfigsfromtesseract-ocr/tessconfigsif the OS specific package doesn’t include them.Installing via pip:Check thepytesseract package pagefor more information.pipinstallpytesseractOr if you have git installed:pipinstall-Ugit+https://github.com/madmaze/pytesseract.gitInstalling from source:gitclonehttps://github.com/madmaze/pytesseract.gitcdpytesseract&&pipinstall-U.Install with conda (viaconda-forge):condainstall-cconda-forgepytesseractTESTINGTo run this project’s test suite, install and runtox. Ensure that you havetesseractinstalled and in your PATH.pipinstalltoxtoxLICENSECheck the LICENSE file included in the Python-tesseract repository/distribution.
As of Python-tesseract 0.3.1 the license is Apache License Version 2.0CONTRIBUTORSOriginally written bySamuel HoffstaetterJuarez BochiMatthias LeeLars KistnerRyan MitchellEmilio CecchiniJohn HagenDarius MorawiecEddie BedadaUğurcan Akyüz