之前做了一个数据的采集。 有一个需求,是要将图片转化为字符串。 这个时候就需要php对图片的ocr 原理很简单, 就是对图片分解成0,1矩阵,然后根据特征, 转化成相应的字符串
$src = 'shop_addr/944846_21.gif';
$ocr = new ocr;
$text = $ocr->fontOcr($src);
echo "图片文件:<img src='{$src}'><br>";
if($text=='' or strstr($text, 'null')) {
echo "<b style='color:#ea0000'>识别失败:{$text}</b>";
} else {
echo "<b style='color:#009900'>识别成功:{$text}</b>";
}
print_r($ocr->bitMap);
class ocr
{
public $bitMap = array();
private $marginTop = 0;
private $marginBottom = 0;
private $OCR = array(
array('1,1,1', '-'),
array('011111110,100000001,100000001,100000001,011111110', '0'),
array('010000001,111111111,000000001', '1'),
array('011000001,100000011,100000101,100011001,011100011', '2'),
array('000000001,010000001,100010001,100110010,011001100', '3'),
array('000001100,000110100,011000100,111111111,000000100', '4'),
array('000000001,111100001,100100001,100100010,100011100', '5'),
array('001111110,010100001,100100001,100100001,100011110', '6'),
array('110000000,100000000,100000111,100111000,111000000', '7'),
array('011101110,100010001,100010001,100010001,011101110', '8'),
array('011110001,100001001,100001001,100001010,011111100', '9'),
array('11101011001,10101110001,10101011111,11101000001,00111111110,00100000001,00101001110,11111110000,10101011111,10101010001,00110000011', '號'),
array('00100110000,11111111111,00101000000,00010001001,01111101001,01010101101,01010111011,11111101010,01010101101,01111101001,00010001000', '樓'),
array('00000000011,00100001100,00100000010,00100000101,10100001001,01100010001,00100100001,00101000001,00110000001,00100000010,00000000010', '之'),
array('00001001000,01001001000,01001010000,11111111111,01001010101,01001010101,01001010101,11111011101,01001100001,01001010111,00001001000', '巷'),
array('00001001001,10001001001,10101001010,10101111100,10101001000,11111001000,10101001000,10101111111,10101001000,10001001000,00001001000', '弄'),
array('00101001001,01101110110,00110011000,11111011100,00110010100,01101111111,00100010100,11111111111,10001000000,10110100100,11000011100', '鄰'),
array('01100000001,01010010101,01010010101,01010110101,01011010101,11010011111,01010110101,01010100101,01011100101,01010110101,01100000001', '室'),
);
public function fontOcr($src)
{
$this->getBitMap($src);
return $this->getRes();
}
private function getBitMap($src)
{
$info = getimagesize($src);
$width = $info[0];
$height = $info[1];
$handle = @ImageCreateFromgif($src);
if(!$handle) { return; }
$blank = false;
$num = 0;
$this->marginTop = $height;
$this->marginBottom = 0;
for($x=1; $x<$width; $x++) {
$bits = array();
for($y=0; $y<$height; $y++) {
$bits['y_'.$y] = (imagecolorat($handle, $x, $y) == 255) ? '0' : '1';
if($bits['y_'.$y]=='1') {
if($y<$this->marginTop) { $this->marginTop = $y; }
if($y>$this->marginBottom) { $this->marginBottom = $y; }
}
}
if(in_array('1', $bits)) {
if($blank) { $num++; }
$this->bitMap['f_'.$num]['x_'.$x] = $bits;
$blank = false;
} else {
$blank = true;
}
}
}
private function getRes()
{
$res = array();
foreach($this->bitMap as $font) {
$temp = array();
foreach($font as $line) {
$s = '';
for($i=$this->marginTop; $i<=$this->marginBottom; $i++) {
$s .= $line['y_'.$i];
}
$temp[] = $s;
}
$bitStr = implode(',', $temp);
$bitStr = $this->clean($bitStr);
$value = 'null';
foreach($this->OCR as $o) {
if($bitStr == $o[0]) { $value = $o[1]; }
}
$res[] = $value;
}
return implode('', $res);
}
private function clean($string)
{
$temp = ','.$string.',';
$times = substr_count($temp, ',')-1;
for($i=20; $i>0; $i--) {
$c = str_repeat('0', $i);
preg_match_all("/,".$c."/", $temp, $r);
if($r and $r[0] and count($r[0])==$times) {
$temp = str_replace(','.$c, ',', $temp);
}
preg_match_all("/".$c.",/", $temp, $r);
if($r and $r[0] and count($r[0])==$times) {
$temp = str_replace($c.',', ',', $temp);
}
}
return substr($temp, 1, -1);
}
}
分享到:
相关推荐
在本项目中,我们将探讨如何使用PHP语言对接百度OCR服务,实现在线文字识别和图片转文字的功能。 首先,我们需要了解百度OCR API的基本概念。百度OCR提供了多种类型的识别服务,包括通用文字识别、表格识别、身份证...
在IT行业中,OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文本转换为机器编码文本的技术,常用于扫描文档、图片等场景。PHP作为广泛应用的服务器端脚本语言,同样可以实现OCR功能。这里...
本项目是关于如何在PHP环境下利用百度的OCR API进行批量图片文字识别,并根据识别结果修改文件名的应用。 首先,我们要了解百度OCR服务。百度提供了丰富的OCR API,包括通用文字识别、表格识别、身份证识别等多种...
Tesseract OCR是Google维护的一个开源项目,它能够从图像中识别出印刷体文本,尤其适用于处理高质量的扫描文档或清晰的图片中的文本。 ### Tesseract OCR简介 Tesseract OCR引擎最初由HP开发,后来在2005年被Google...
本篇将深入探讨“百度OCR-身份证图片识别源码”这一技术主题,它主要涉及百度OCR技术以及如何利用其进行身份证信息的自动识别。身份证识别在现代社会有着广泛的应用,例如线上实名认证、金融业务办理等,极大地提高...
在IT行业中,HTML、PHP和百度OCR技术的结合在很多实际应用中都扮演着重要的角色,尤其是对于身份信息的自动识别和处理。本项目显然利用这些技术实现了身份证的拍照识别功能,并能保存缩略图。以下是对这些知识点的...
百度Ocr识别 Tp5 实例,已完成基于Tp5使用的第三方库的封装,下载资源解压至extend, 解压后目录: 项目更目录/extend/Ai;控制器使用实例参考项目更目录/extend/Ai/demo.php
在IT行业中,光学字符识别(OCR)技术是一种重要的图像处理技术,它允许计算机从扫描的文档、图片或视频帧中提取文字,将其转化为可编辑、可搜索的数据。本项目是基于腾讯云OCR识别接口实现的一个识别工具,它能够...
本示例将详细介绍如何使用APISpace的驾驶证OCR API接口,以及如何在PHP环境中进行调用。 ### 驾驶证OCR API概述 驾驶证OCR(Optical Character Recognition)是利用光学和字符识别技术,将驾驶证上的文字信息转换为...
在本篇中,我们将详细探讨如何使用PHP来调用APISpace提供的身份证OCR API接口。 首先,要使用APISpace的身份证OCR API,你需要先在他们的官方网站(https://www.apispace.com)注册并订阅服务。特别是对于身份证OCR...
然后,我们定义了多张图片的路径,并遍历这些图片路径,调用OCR SDK提取图片文字,并输出提取的文字。 需要注意的是,OCR SDK需要从百度AI平台获取,需要先注册百度AI平台账号并创建OCR应用,然后获取API Key和...
本项目提供的"php ocr 库"可能是用于实现这一功能的PHP库,它可以帮助开发者快速集成OCR功能到自己的项目中。 `OCR.class.php`是这个库的核心类文件,很可能包含了OCR的主要功能和方法,如图像预处理、文字检测和...
阿里云提供了丰富的OCR服务,能够识别多种类型的文档和图片,包括身份证、营业执照、名片、表格、发票等。 这个Java项目是基于Spring Boot框架搭建的。Spring Boot是一款流行的Java开发框架,它简化了创建独立的、...
本篇内容主要讲述了如何利用PHP语言结合百度AI提供的OCR(Optical Character Recognition,光学字符识别)接口来实现图片中文字的识别功能。在阐述该知识点之前,先了解一下相关概念: OCR是图像处理领域的一个分支...
营业执照OCR API提供了对营业执照图片的文字识别功能。开发者可以通过调用这个API,将营业执照的图片上传,然后API会返回识别出的文字内容。这对于需要快速提取营业执照信息的业务流程来说,极大地提高了效率。 ...
总之,"Laravel开发-laravel-ocr"项目提供了一种在Laravel框架内集成OCR功能的方法,通过封装GOCR工具,使开发者能更方便地在PHP web应用中处理文本识别任务,从而提升工作效率和用户体验。对于熟悉Laravel的开发者...
OCR.space 提供了一个易于使用的 RESTful API,支持多种语言和图像格式,能够高效地识别图片中的文字。在 Laravel 中使用 OCR.space 需要完成以下步骤: 1. **注册账户与获取 API 密钥**: 在 [OCR.space]...
下面我们将详细讨论如何使用PHP调用APISpace的银行卡OCR API。 首先,调用API前需要在APISpace平台上注册并订阅相应的服务。你可以通过提供的链接(https://www.apispace.com/chuanglan/api/253-ocr-bankcard/api/...
OCR技术主要用于将扫描文档、图片中的文字转换为可编辑的文本格式。通过复杂的图像处理和机器学习算法,OCR系统能够分析并识别出字符形状,进而转换成相应的ASCII或Unicode文本。Tesseract OCR作为一款开源工具,其...