ikerst/tesseract_ocr

一个用于在PHP中与Tesseract OCR一起工作的包装器。

dev-master 2020-04-03 01:11 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:45 UTC


README

一个用于在PHP中与Tesseract OCR一起工作的包装器。

安装

通过 [Composer][]

$ composer require IkerST/tesseract_ocr

‼️ 此库依赖于 [Tesseract OCR][],版本 3.02 或更高。

针对Windows用户的说明

有 [多种方式][tesseract_installation_on_windows] 可以在您的系统上安装 [Tesseract OCR][],但如果您只想快速启动,我建议使用 [Chocolatey][] 安装 [Capture2Text][] 包。

choco install capture2text --version 3.9

⚠️ Capture2Text 的最新版本停止提供 tesseract 二进制文件。

针对macOS用户的说明

使用 [MacPorts][],您可以安装对单个语言的支持,如下所示

	sudo port install tesseract-<langcode>

但使用 [Homebrew][] 则不可能。它默认只提供 英语 支持,因此如果您打算使用其他语言,最快捷的解决方案是安装所有语言。

brew install tesseract --with-all-languages

用法

基本用法

use IkerST\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('text.png'))
    ->run();

其他语言

use IkerST\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('german.png'))
    ->lang('deu')
    ->run();

多语言

use IkerST\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('mixed-languages.png'))
    ->lang('eng', 'jpn', 'spa')
    ->run();

诱导识别

use IkerST\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('8055.png'))
    ->whitelist(range('A', 'Z'))
    ->run();

API

image

通过 tesseract 识别图像的路径。

$ocr = new TesseractOCR();
$ocr->image('/path/to/image.png');
$ocr->run();

imageData

将图像设置为通过 tesseract 识别,从字符串中,具有其大小。这在与已加载到内存中的文件处理时很有用。您可以轻松检索图像对象的数据和大小。

//Using Imagick
$data = $img->getImageBlob();
$size = $img->getImageLength();
//Using GD
ob_start();
// Note that you can use any format supported by tesseract
imagepng($img, null, 0);
$size = ob_get_length();
$data = ob_get_clean();

$ocr = new TesseractOCR();
$ocr->imageData($data, $size);
$ocr->run();

executable

如果由于任何原因 tesseract 可执行文件不在 $PATH 中,请定义自定义的 tesseract 可执行文件位置。

echo (new TesseractOCR('img.png'))
    ->executable('/path/to/tesseract')
    ->run();

version

返回 tesseract 的当前版本。

echo (new TesseractOCR())->version();

availableLanguages

返回可用语言/脚本列表。

foreach((new TesseractOCR())->availableLanguages() as $lang) echo $lang;

更多信息: https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#languages-and-scripts

tessdataDir

指定 tessdata 目录的自定义位置。

echo (new TesseractOCR('img.png'))
    ->tessdataDir('/path')
    ->run();

userWords

指定用户单词文件的位置。

这是一个纯文本文件,包含您希望 tesseract 作为正常字典单词考虑的单词列表。

当处理包含技术术语、行话等内容时很有用。

$ cat /path/to/user-words.txt
foo
bar
echo (new TesseractOCR('img.png'))
    ->userWords('/path/to/user-words.txt')
    ->run();

userPatterns

指定用户模式文件的位置。

如果您处理的文件中有已知模式,此选项可以帮助大量提高 tesseract 的识别精度。

$ cat /path/to/user-patterns.txt'
1-\d\d\d-GOOG-441
www.\n\\\*.com
echo (new TesseractOCR('img.png'))
    ->userPatterns('/path/to/user-patterns.txt')
    ->run();

lang

定义在识别期间使用的一个或多个语言。可以找到可用语言的完整列表:https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc#languages

使用组合 ->lang('chi_sim', 'chi_tra') 对中文进行正确识别。

 echo (new TesseractOCR('img.png'))
     ->lang('lang1', 'lang2', 'lang3')
     ->run();

psm

指定页面分割方法,它指示 tesseract 如何解释给定的图像。

更多信息: https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality#page-segmentation-method

echo (new TesseractOCR('img.png'))
    ->psm(6)
    ->run();

oem

指定 OCR 引擎模式。(见 tesseract --help-oem

echo (new TesseractOCR('img.png'))
    ->oem(2)
    ->run();

whitelist

这是 ->config('tessedit_char_whitelist', 'abcdef....') 的快捷方式。

echo (new TesseractOCR('img.png'))
    ->whitelist(range('a', 'z'), range(0, 9), '-_@')
    ->run();

configFile

指定要使用的配置文件。它可以是您自己的配置文件路径,也可以是预定义配置文件之一:https://github.com/tesseract-ocr/tesseract/tree/master/tessdata/configs

echo (new TesseractOCR('img.png'))
    ->configFile('hocr')
    ->run();

setOutputFile

指定要使用的输出文件。请注意:如果您设置了输出文件,则选项withoutTempFiles将被忽略。即使withoutTempFiles = true,也会写入(并删除)临时文件。

configFile结合使用,您可以得到hocrtsvpdf文件。

echo (new TesseractOCR('img.png'))
    ->configFile('pdf')
    ->setOutputFile('/PATH_TO_MY_OUTPUTFILE/searchable.pdf');
    ->run();

数字

->configFile('digits')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->digits()
    ->run();

hocr

->configFile('hocr')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->hocr()
    ->run();

pdf

->configFile('pdf')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->pdf()
    ->run();

安静

->configFile('quiet')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->quiet()
    ->run();

tsv

->configFile('tsv')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->tsv()
    ->run();

txt

->configFile('txt')的快捷方式。

echo (new TesseractOCR('img.png'))
    ->txt()
    ->run();

临时目录

定义一个自定义目录来存储由tesseract生成的临时文件。请确保该目录实际存在,并且运行php的用户有权在其中写入。

echo (new TesseractOCR('img.png'))
    ->tempDir('./my/custom/temp/dir')
    ->run();

withoutTempFiles

指定tesseract应该在临时文件中写入已识别的文本。数据是从tesseract的标准输出中收集的。

echo (new TesseractOCR('img.png'))
    ->withoutTempFiles()
    ->run();

其他选项

Tesseract提供的任何配置选项都可以这样使用

echo (new TesseractOCR('img.png'))
    ->config('config_var', 'value')
    ->config('other_config_var', 'other value')
    ->run();

或者这样

echo (new TesseractOCR('img.png'))
    ->configVar('value')
    ->otherConfigVar('other value')
    ->run();

更多信息: https://github.com/tesseract-ocr/tesseract/wiki/ControlParams

线程限制

有时,限制tesseract允许使用的线程数量可能是有用的(例如,在这个情况中)。将最大线程数作为run函数的参数设置。

echo (new TesseractOCR('img.png'))
    ->threadLimit(1)
    ->run();