ikerst / tesseract_ocr
一个用于在PHP中与Tesseract OCR一起工作的包装器。
Requires
- php: ^5.4 || ^7.0
Requires (Dev)
- codacy/coverage: dev-master
- phpunit/php-code-coverage: ^2.2.4
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
结合使用,您可以得到hocr
、tsv
或pdf
文件。
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();
->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();