Project Icon

tesseract-ocr-for-php

用于PHP的Tesseract OCR封装库

tesseract-ocr-for-php是一个PHP封装库,提供简洁的接口调用Tesseract OCR引擎。该库支持多语言文字识别、自定义配置和多种输出格式(如HOCR、PDF)。适用于文档数字化、图像文字提取等OCR应用场景。通过Composer可快速集成到PHP项目中,简化OCR开发流程。

PHP版Tesseract OCR

PHP版Tesseract OCR

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

[![CI][ci_badge]][ci] [![AppVeyor][appveyor_badge]][appveyor] [![Codacy][codacy_badge]][codacy] [![测试覆盖率][test_coverage_badge]][test_coverage]
[![最新稳定版本][stable_version_badge]][packagist] [![总下载量][total_downloads_badge]][packagist] [![月下载量][monthly_downloads_badge]][packagist]

安装

通过[Composer][]安装:

$ composer require thiagoalessio/tesseract_ocr

:bangbang: 该库依赖于[Tesseract OCR][],版本3.02或更高。


![][windows_icon] Windows用户注意事项

有[多种方法][tesseract_installation_on_windows]在你的系统上安装[Tesseract OCR][],但如果你只想快速上手运行,我推荐使用[Chocolatey][]安装[Capture2Text][]包。

choco install capture2text --version 3.9

:warning: 最新版本的[Capture2Text][]已停止提供tesseract二进制文件。


![][macos_icon] macOS用户注意事项

使用[MacPorts][],你可以安装单独的语言支持,如下所示:

$ sudo port install tesseract-<langcode>

但使用[Homebrew][]无法实现。默认情况下它只提供英语支持,所以如果你打算用于其他语言,最快的解决方案是安装所有语言:

$ 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

破解验证码

是的,我知道你们中的一些人可能想用这个库来进行破解验证码这种"高尚"的目的,所以请看看这个评论:

https://github.com/thiagoalessio/tesseract-ocr-for-php/issues/91#issuecomment-342290510

API

run

执行tesseract命令,可选择接收一个整数作为timeout参数,以防你遇到tesseract进程卡住的情况。

$ocr = new TesseractOCR();
$ocr->run();
$ocr = new TesseractOCR();
$timeout = 500;
$ocr->run($timeout);

image

定义要被tesseract识别的图像路径。

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

imageData

从字符串设置要被tesseract识别的图像及其大小。 这在处理已经加载到内存中的文件时非常有用。 你可以轻松获取图像对象的图像数据和大小:

//使用Imagick
$data = $img->getImageBlob();
$size = $img->getImageLength();
//使用GD
ob_start();
// 注意你可以使用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

线程限制

有时,限制 Tesseract 可以使用的线程数可能会很有用(例如在这种情况下)。将最大线程数设置为 run 函数的参数:

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

如何贡献

你可以通过以下方式为这个项目做出贡献:

  • 如果你发现了bug或希望提出新功能,可以开启一个 [Issue][];
  • 提交一个 [Pull Request][],其中包含修复bug、补充/纠正文档或实现新功能的代码;

请确保你查看了我们的 [行为准则][] 和 [贡献][] 指南。

许可证

tesseract-ocr-for-php 基于 [MIT 许可证][] 发布。

爱心 在柏林制作

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号