个人工具

UbuntuHelp:OCR

来自Ubuntu中文

跳转至: 导航, 搜索

OCR - Optical Character Recognition

OCR is a technology that allows you to convert scanned images of text into plain text. This enables you to save space, edit the text and search/index it.

Available OCR tools

The Ubuntu Universe repositories contain the following OCR tools:

Tesseract

Introduction

Arguably the one producing the best (most accurate) results is Tesseract. It is a technology initially developed by HP Labs between 1985 and 1995, then they open-sourced it in 2005. Tesseract can recognize text in 7 different languages: English, German, French, Italian, Spanish, Brazilian Portuguese and Dutch. You can install more than one dictionary if needed. It does not support layout analysis, so multi-column text, images, equations etc. should give you a garbled text output. Also, it only supports TIFF images as input.

Usage

Tesseract is currently a command-line-only tool (although they're working on an integration with OCROpus for a GUI). After successful installation, the command to use is tesseract <path to tiff image> <output file>. Tesseract will automatically give the output file a .txt extension. It is critical that the tiff image have a ".tif" extension and not a ".tiff" extension. The command line should look like this example: $ tesseract ~/input.tif output Where input.tif is the document to be converted located in your home folder and output is the document that Tesseract will create as output.txt. The .txt file extension will be added by Tesseract automatically.

Preparing images for Tesseract

Tesseract is not very flexible about the format of its input images. It will only accept TIFF images. According to user reports, compressed TIFF images are quite problematic, and the same goes for grey-scale and colour images. So you're better of with single-bit uncompressed TIFF images. The process to prepare them with GIMP is very simple:

  1. Go to the Image→Mode menu and make sure the image is in RGB or Grayscale mode.
  2. Select from the menu Tools→Color Tools→Threshold and choose an adequate threshold value.
  3. Select from the menu Image→Mode→Indexed and from the options choose 1-bit and no dithering.
  4. Save the image in TIFF format with a .tif extension.

Using Tesseract With a Multi Page PDF

Often, scanned documents are stored as a raster image in a large PDF document. Using ImageMagick, the individual pages can then be extracted as TIFF files for processing using Tesseract. The following script can help automate this process:

#!bash
#!/bin/sh
PAGES=100 # set to the number of pages in the PDF
SOURCE=book.pdf # set to the file name of the PDF
OUTPUT=book.txt # set to the final output file
RESOLUTION=600 # set to the resolution the scanner used (the higher, the better)

touch $OUTPUT
for i in `seq 1 $PAGES`; do
    convert -monochrome -density $RESOLUTION $SOURCE\[$(($i - 1 ))\] page$i.tif
    tesseract page$i.tif page$i
    cat $OUTPUT page$i.txt > temp.txt
    rm $OUTPUT
    rm page$i.tif
    rm page$i.txt
    mv temp.txt $OUTPUT
done

After running this script, the OCR text should be contained in book.txt (or whatever you set $OUTPUT to be).

Cuneiform

Introduction

Cuneiform is another OCR system, which was originally developed and open-sourced by Cognitive Technologies. Its Linux port is being developed on Launchpad.

Using pdfocr With a Multi Page PDF

pdfocr is a script that uses cuneiform which both performs OCR on multi-page PDF files, and also embeds the text back into the PDF file as a searchable text layer. The script itself can be obtained from Github or from the PPA. To use, simply do:

#!bash
pdfocr -i input.pdf -o output.pdf

Further Reading