怎么提取图片中的文字

要是说小编犹如此的生机勃勃段文本………Configuration1:A1A2A3亚洲龙……..Z1Z2Z3Z4Configuration2:……省略号代表任何剧情的文件。作者今后想把Configuration1:和Configuration2:之间的保有文字都领到出来,也正是Configuration第11中学含有的所有内容,那自身应当怎么写这段代码呢?应该用RegularExpression吗?向各位大佬求助

巡检类工作平时会出具日报,近些日子在原本日报的底子上又新扩大了叁个表的数据量总括晚报,首假设本着数据库中动用较频仍,数据量又非常大的31张表。该晚报有七个sheet组成,第二个sheet是数量填充,第一个sheet则是依靠第二个sheet的数量开展的文字描述和图表展现。

英特网见到“怎么着提取图片中的文字”的小视频,现学现用,与大家大饱眼福。

PHP怎么提取图片上的文字?
威尼斯网址开户网站 1

文字描述主要饱含两有的:生机勃勃、展现该31张表中数据量最大的9张表。显示结果相像于:emp(约14万),dept(约100万)。。。当然,那几个只是举例,为了幸免引起不须求的劳动(首假如公司音讯安全地方的杜撰),作者这里不容许将具体晚报的内容贴出来。究竟,那些会提到到表名和数据量大小。二、绝对于后日,这31张表中有怎么着表的数据量在前几天具备狠抓。

威尼斯网址开户网站 2

那样一张图片,php可以把地点的文字给提收取来呢?若PHP不得以完结,有何样别的能够兑现的法子?

威尼斯网址开户网站,对于这种机械类的行事,每趟做起来都相比繁缛,胸口痛。Perl之父Larry Wall说过,懒惰、急躁、自高是技师的三大美德。于是就动手写了多少个perl程序,每回只要把当天的数据量copy到Excel中,实行该程序就能够。

1.开荒Wechat—点“发掘”—选用“小程序’”

程序内容如下:

威尼斯网址开户网站 3

use strict;
use Spreadsheet::XLSX;
use Unicode::UTF8simple;
use DateTime;
my ($col1,$col2,%hash1,%hash2,@tabname,$num,$num1);
my $dt=DateTime->from_epoch(epoch=>time);
my $duration=DateTime::Duration->new(days=>-1);
my $dt1=$dt+$duration;
my $date=$dt->month.'-'.$dt->day.'-'.substr($dt->year,2,2);
my $date1=$dt1->month.'-'.$dt1->day.'-'.substr($dt1->year,2,2);
my $uref =new Unicode::UTF8simple;
my $file='C:\Users\Victor\Desktop\需做数据迁移的数据表数据量巡检日报-20150713.xlsx';
$file=$uref->fromUTF8('gb2312',$file);
my $workbook  = Spreadsheet::XLSX -> new ($file);
my $worksheet = $workbook->worksheet('数据填写');
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for my $col ( $col_min .. $col_max ){
    my $cell = $worksheet-> get_cell( 0, $col );
    next unless $cell;
    $col1=$col if ($cell->value() eq $date1);
    $col2=$col if ($cell->value() eq $date);
}
for my $row (1..$row_max){
    my $cell = $worksheet->get_cell($row,1);
    my $cell1= $worksheet->get_cell($row,$col1);
    my $cell2= $worksheet->get_cell($row,$col2);
    $hash1{$cell->value()}=$cell1->value();
    $hash2{$cell->value()}=$cell2->value();
    push @tabname,$cell->value();
}
print $uref->fromUTF8('gb2312',"(1)需做数据迁移的数据表当前数据量较大的依次为(不计日志表):\n");
my $str2=$uref->fromUTF8('gb2312','约');
my $str3=$uref->fromUTF8('gb2312','万');
my $str4=$uref->fromUTF8('gb2312','、');
foreach my $key(sort {$hash2{$b}<=>$hash2{$a}} keys %hash2){
       printf "%s(%s%d%s)%s",$key,$str2,$hash2{$key}/10000,$str3,$str4;
       $num++;
       last if $num == 11;   
}
print "\n";
print $uref->fromUTF8('gb2312',"(2)务开通定单调度关键数据表数据量增长趋势:\n");
foreach(@tabname){
    if($hash1{$_} < $hash2{$_}){
        print $_.$str4;
        $num1++;
    }
}
print $uref->fromUTF8('gb2312',"这$num1张表相对昨日有所增长。\n")

2.增选“传图识字”(若未有可输入“传图识字”搜索小程序)

证实如下:

威尼斯网址开户网站 4

1>
在那,用了八个模块,在那之中Spreadsheet::XLSX用于读取2006及以上版本的Excel。缺憾的是,CPAN中貌似没有二个模块扶助对原来就有Excel进行写操作。具体在本例中,第二个sheet中的文字描述完全能够在第叁个sheet中数据功底上转换。但因找不到对既有Excel举行写的模块,所以生成的文字描述无法插入到第3个sheet中。于是只能退而求其次,只变动文字描述,然后再手动粘贴到第二个sheet中。第3个模块是Unicode::UTF8simple,首要用来UTF8和别的字符集的转移,在本例中,即汉语字符集gb2312。首个模块是Date提姆e,用于组织即日的日子和前几天的日子。

3.点“拍照或选图”

2> 

威尼斯网址开户网站 5

my $dt=DateTime->from_epoch(epoch=>time);
my $duration=DateTime::Duration->new(days=>-1);
my $dt1=$dt+$duration;
my $date=$dt->month.'-'.$dt->day.'-'.substr($dt->year,2,2);
my $date1=$dt1->month.'-'.$dt1->day.'-'.substr($dt1->year,2,2);

4.水墨画或接收原相册中已部分图片,点“打勾”

用来组织几眼下的日期和前日的日子,当中$date是今日的日子,$date1是后天的日期。

威尼斯网址开户网站 6

3>

5.点“原图”–“完成”

my $worksheet = $workbook->worksheet('数据填写');
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for my $col ( $col_min .. $col_max ){
    my $cell = $worksheet-> get_cell( 0, $col );
    next unless $cell;
    $col1=$col if ($cell->value() eq $date1);
    $col2=$col if ($cell->value() eq $date);
}

威尼斯网址开户网站 7

先是个sheet的名字是“数据填充”,首先得到该sheet行、列的限制。

6.点“小星型”全选–“打勾”–跳出“复制作而成功”

第风流倜傥行的剧情如下:

威尼斯网址开户网站 8

威尼斯网址开户网站 9

7.打开“便签”等,“粘贴”既完成

进而地点那一个for语句用于获取今天日期和今日日期所在的列。

专一上面for语句中的next unless
$cell,它的情趣是只要$cell为空,则持续下三个巡回。因第一列第风姿罗曼蒂克行为空,所以该语句尤为必要。

4> 

for my $row (1..$row_max){
    my $cell = $worksheet->get_cell($row,1);
    my $cell1= $worksheet->get_cell($row,$col1);
    my $cell2= $worksheet->get_cell($row,$col2);
    $hash1{$cell->value()}=$cell1->value();
    $hash2{$cell->value()}=$cell2->value();
    push @tabname,$cell->value();
}

各自组织四个哈希表,键均是第一列的表名,值是对应的数据量大小。个中hash1对应的是前日的数据量,hash2对应的是几眼前的数据量。

将表名放到数组中,用于后续明日和前几天数据量的相比较。

5> 

print $uref->fromUTF8('gb2312',"(1)需做数据迁移的数据表当前数据量较大的依次为(不计日志表):\n");
my $str2=$uref->fromUTF8('gb2312','约');
my $str3=$uref->fromUTF8('gb2312','万');
my $str4=$uref->fromUTF8('gb2312','、');
foreach my $key(sort {$hash2{$b}<=>$hash2{$a}} keys %hash2){
       printf "%s(%s%d%s)%s",$key,$str2,$hash2{$key}/10000,$str3,$str4;
       $num++;
       last if $num == 11;   
}

对hash2,即明日的数据量举办排序,打字与印刷出叁15个表中排行前九人的表,输入结果形式如下:

EMP(约1100万)、DEPT(约1000万)、location(约812万)、sales(约123万)…

因“约”、“万”、“、”均是普通话字符,所以要求改动。因数据量的单位是万,在此,我们将$hash2{$key}的值除以10000。

6>

print "\n";
print $uref->fromUTF8('gb2312',"(2)务开通定单调度关键数据表数据量增长趋势:\n");
foreach(@tabname){
    if($hash1{$_} < $hash2{$_}){
        print $_.$str4;
        $num1++;
    }
}
print $uref->fromUTF8('gb2312',"这$num1张表相对昨日有所增长。\n")

结构文字描述的第二片段,将前些天相对于前天数据量有所增添的表打字与印刷管理。输出结果相同于:

emp、dept、location、sales那4张表相对几天前全数坚实。

相关文章