之前做了一个数据的采集。 有一个需求,是要将图片转化为字符串。 这个时候就需要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
百度OCR-身份信息识别,具体使用方法参考我的博客:https://blog.csdn.net/HorseRoll/article/details/82800762
PHP使用百度OCR图片识别具体开发,获取token,传递参数,调用方法,需要注意的坑都在注释中详细的写出来了,封装好的ocr类,和实际项目接口调用方法,图片上传,base64转码。
PHP语言使用TesseractOCR来处理图片。
百度Ocr识别 Tp5 实例,已完成基于Tp5使用的第三方库的封装,下载资源解压至extend, 解压后目录: 项目更目录/extend/Ai;控制器使用实例参考项目更目录/extend/Ai/demo.php
然后,我们定义了多张图片的路径,并遍历这些图片路径,调用OCR SDK提取图片文字,并输出提取的文字。 需要注意的是,OCR SDK需要从百度AI平台获取,需要先注册百度AI平台账号并创建OCR应用,然后获取API Key和...
自动识别图片的文字内容、证件、车牌、身份证等 能直接对获取到的信息进行相关处理,直接调用就行。 使用的是java
1.需要有自己的百度OCR平台API相关密钥(在word.php中修改自己的API信息) 2.文件夹doc和up均需要写入权限(一个是保存上传图片的,一个是保存生成word文件的) 3.打开首页index.php后,上传图片即可识别为文本 本程序...
PHP实现电话号码图片识别ocr
php开发的orc接口。主要用来做图片上的文字识别
您需要将your_app_id、your_api_key和your_secret_key替换为您...使用PHP SDK调用百度OCR接口,将图片转换为文字,并将识别结果保存到JSON文件中。 读取JSON文件,并将识别结果生成HTML代码。 在页面中显示HTML代码。
主要介绍了PHP+百度AI OCR文字识别实现了图片的文字识别功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
两种车牌识别的MATLAB代码,都是用字符模板匹配的方法,但是图像与处理方法不同,在MATLAB2014a下测试,均能运行,特别适合车牌识别入门。
百度OCR体验地址: https://ai.baidu.com/tech/imagerecognition/general 腾讯OCR体验地址: https://cloud.tencent.com/act/event/ocrdemo 测试结果是:腾讯的效果要比百度的好 腾讯云目前(2020年2月16日)额度是...
上传图片base64编码后进行urlencode要求base64编码和urlencode后大小不超过4M最短边至少15px,最长边最大4096px支持jpg/png/bmp格式 (Very Important)创建完webapi应用添加合成服务之后一定要设置ip白名单,找到...
我们封装了腾讯云慧眼人脸核身,提供各类认证功能模块,包含证件 OCR 识别、活体检测、人脸1:1对比等。微信/电话:185699405988
存储为 BMP 图片格式(600M),由于体积太大,为了防止以后要识别它,就用 汉王PDF OCR 8.1.0.3 来识别为TXT文件。TXT文件没有经过校对。 最后,使用 FreePic2Pdf.exe V1.26 来生成 PDF 了。 GPS的打算: 10米...
基于laravel开发的图片识别平台管理系统源码 此项目是整个AI图片识别项目的业务网站和客户后台管理端 原本是作为商业项目开发的,但项目未上线就宣告结束... 1、 为php安装此扩展 https://github.com/hookover/php_sno