`
lanlansnss
  • 浏览: 45314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php OCR图片

    博客分类:
  • php
 
阅读更多
之前做了一个数据的采集。 有一个需求,是要将图片转化为字符串。 这个时候就需要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);
	}
}
分享到:
评论
1 楼 ycdyx 2015-09-01  
试了,没用~

相关推荐

    百度OCR高精度文字识别利用php进行对接图片转换文字在线识别文字

    在本项目中,我们将探讨如何使用PHP语言对接百度OCR服务,实现在线文字识别和图片转文字的功能。 首先,我们需要了解百度OCR API的基本概念。百度OCR提供了多种类型的识别服务,包括通用文字识别、表格识别、身份证...

    php图文识别OCR类

    在IT行业中,OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文本转换为机器编码文本的技术,常用于扫描文档、图片等场景。PHP作为广泛应用的服务器端脚本语言,同样可以实现OCR功能。这里...

    php百度批量图片文字识别应用Ocr,获取需要的文字改文件名

    本项目是关于如何在PHP环境下利用百度的OCR API进行批量图片文字识别,并根据识别结果修改文件名的应用。 首先,我们要了解百度OCR服务。百度提供了丰富的OCR API,包括通用文字识别、表格识别、身份证识别等多种...

    tesseract-ocr-for-php-master.zip

    Tesseract OCR是Google维护的一个开源项目,它能够从图像中识别出印刷体文本,尤其适用于处理高质量的扫描文档或清晰的图片中的文本。 ### Tesseract OCR简介 Tesseract OCR引擎最初由HP开发,后来在2005年被Google...

    百度OCR-身份证图片识别源码

    本篇将深入探讨“百度OCR-身份证图片识别源码”这一技术主题,它主要涉及百度OCR技术以及如何利用其进行身份证信息的自动识别。身份证识别在现代社会有着广泛的应用,例如线上实名认证、金融业务办理等,极大地提高...

    html+php+百度ocr身份证识别上传返回数据,支持压缩保存缩率图

    在IT行业中,HTML、PHP和百度OCR技术的结合在很多实际应用中都扮演着重要的角色,尤其是对于身份信息的自动识别和处理。本项目显然利用这些技术实现了身份证的拍照识别功能,并能保存缩略图。以下是对这些知识点的...

    百度Ocr识别 Tp5 实例

    百度Ocr识别 Tp5 实例,已完成基于Tp5使用的第三方库的封装,下载资源解压至extend, 解压后目录: 项目更目录/extend/Ai;控制器使用实例参考项目更目录/extend/Ai/demo.php

    基于腾讯云ocr识别接口做的识别工具(自动识别图片、证件、车牌、身份证等)

    在IT行业中,光学字符识别(OCR)技术是一种重要的图像处理技术,它允许计算机从扫描的文档、图片或视频帧中提取文字,将其转化为可编辑、可搜索的数据。本项目是基于腾讯云OCR识别接口实现的一个识别工具,它能够...

    APISpace 驾驶证OCR API接口 PHP调用示例代码

    本示例将详细介绍如何使用APISpace的驾驶证OCR API接口,以及如何在PHP环境中进行调用。 ### 驾驶证OCR API概述 驾驶证OCR(Optical Character Recognition)是利用光学和字符识别技术,将驾驶证上的文字信息转换为...

    APISpace 身份证OCR API接口 PHP调用示例代码

    在本篇中,我们将详细探讨如何使用PHP来调用APISpace提供的身份证OCR API接口。 首先,要使用APISpace的身份证OCR API,你需要先在他们的官方网站(https://www.apispace.com)注册并订阅服务。特别是对于身份证OCR...

    PHP实现提取图片文字的示例代码,支持多张图片提取文字

    然后,我们定义了多张图片的路径,并遍历这些图片路径,调用OCR SDK提取图片文字,并输出提取的文字。 需要注意的是,OCR SDK需要从百度AI平台获取,需要先注册百度AI平台账号并创建OCR应用,然后获取API Key和...

    php ocr 库

    本项目提供的"php ocr 库"可能是用于实现这一功能的PHP库,它可以帮助开发者快速集成OCR功能到自己的项目中。 `OCR.class.php`是这个库的核心类文件,很可能包含了OCR的主要功能和方法,如图像预处理、文字检测和...

    Java 版 OCR印刷文字识别接口

    阿里云提供了丰富的OCR服务,能够识别多种类型的文档和图片,包括身份证、营业执照、名片、表格、发票等。 这个Java项目是基于Spring Boot框架搭建的。Spring Boot是一款流行的Java开发框架,它简化了创建独立的、...

    PHP+百度AI OCR文字识别实现了图片的文字识别功能

    本篇内容主要讲述了如何利用PHP语言结合百度AI提供的OCR(Optical Character Recognition,光学字符识别)接口来实现图片中文字的识别功能。在阐述该知识点之前,先了解一下相关概念: OCR是图像处理领域的一个分支...

    APISpace 营业执照OCR API接口 PHP调用示例代码

    营业执照OCR API提供了对营业执照图片的文字识别功能。开发者可以通过调用这个API,将营业执照的图片上传,然后API会返回识别出的文字内容。这对于需要快速提取营业执照信息的业务流程来说,极大地提高了效率。 ...

    Laravel开发-laravel-ocr

    总之,"Laravel开发-laravel-ocr"项目提供了一种在Laravel框架内集成OCR功能的方法,通过封装GOCR工具,使开发者能更方便地在PHP web应用中处理文本识别任务,从而提升工作效率和用户体验。对于熟悉Laravel的开发者...

    Laravel开发-ocr-space

    OCR.space 提供了一个易于使用的 RESTful API,支持多种语言和图像格式,能够高效地识别图片中的文字。在 Laravel 中使用 OCR.space 需要完成以下步骤: 1. **注册账户与获取 API 密钥**: 在 [OCR.space]...

    APISpace 银行卡OCR API接口 PHP调用示例代码

    下面我们将详细讨论如何使用PHP调用APISpace的银行卡OCR API。 首先,调用API前需要在APISpace平台上注册并订阅相应的服务。你可以通过提供的链接(https://www.apispace.com/chuanglan/api/253-ocr-bankcard/api/...

    tesseract-ocr-开源的ocr工具

    OCR技术主要用于将扫描文档、图片中的文字转换为可编辑的文本格式。通过复杂的图像处理和机器学习算法,OCR系统能够分析并识别出字符形状,进而转换成相应的ASCII或Unicode文本。Tesseract OCR作为一款开源工具,其...

Global site tag (gtag.js) - Google Analytics