psagnataf/tesseract_ocr

一个用于在PHP中使用Tesseract OCR的包装器。

2.11.2 2021-04-09 21:05 UTC

README

Tesseract OCR for PHP

PHP版本的Tesseract OCR

一个用于在PHP中使用Tesseract OCR的包装器。

CI AppVeyor Codacy Test Coverage
Latest Stable Version Total Downloads Monthly Downloads
Join the chat

安装

通过 Composer

$ composer require thiagoalessio/tesseract_ocr

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


Windows用户注意事项

多种方法可以在您的系统上安装Tesseract OCR,但如果您只需要快速启动,我建议使用Capture2Text软件包和Chocolatey进行安装。

choco install capture2text --version 3.9

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


macOS用户注意事项

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

$ sudo port install tesseract-<langcode>

但是,使用Homebrew则不可行。它默认只提供对English的支持,因此如果您打算使用其他语言,最快的方法是安装所有语言

$ brew install tesseract tesseract-lang

用法

基本用法

use thiagoalessio\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('text.png'))
    ->run();
The quick brown fox
jumps over
the lazy dog.

其他语言

use thiagoalessio\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('german.png'))
    ->lang('deu')
    ->run();
Bülowstraße

多语言

use thiagoalessio\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('mixed-languages.png'))
    ->lang('eng', 'jpn', 'spa')
    ->run();
I eat すし y Pollo

诱导识别

use thiagoalessio\TesseractOCR\TesseractOCR;
echo (new TesseractOCR('8055.png'))
    ->allowlist(range('A', 'Z'))
    ->run();
BOSS

破解验证码

是的,我知道有些人可能想将这个库用于破解验证码的高尚目的,所以请参阅此评论

thiagoalessio#91 (评论)

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中。

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

来自@daijiale的建议: 使用组合 ->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();

dpi

指定图像DPI。如果您的图像在元数据中不包含此信息,则很有用。

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

allowlist

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

echo (new TesseractOCR('img.png'))
    ->allowlist(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();

digits

这是->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();

quiet

这是->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();

tempDir

定义一个自定义目录以存储由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

Thread-limit

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

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

获取帮助的地方

加入Gitter上的聊天。

如何贡献

您可以通过以下方式为此项目做出贡献

  • Gitter上帮助新用户;
  • 如果您发现错误或希望提出新功能,请打开一个问题
  • 通过带有修复错误、缺失/错误文档或实现新功能的代码的拉取请求进行贡献。

请确保您查看我们的行为准则贡献指南

许可证

tesseract-ocr-for-php采用MIT许可证发布。

在柏林用love(爱)制作