发票识别基于图像形态学处理的发票数字识别的MATLAB仿真
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发票识别基于图像形态学处理的发票数字识别的MATLAB仿真相关的知识,希望对你有一定的参考价值。
1.软件版本
matlab2021a
2.部分核心代码
clc;
clear;
close all;
warning off;
addpath 'func\\'
alpha = 0.9;
LL = 3;
%下面的参数需要做略微调整
% 1 :33
% 2 :48
% 3 :28
% 4 :31
% 5 :32
% 6 :32
% 7 :29
% 8 :26
% 9 :25
% 10 :44
% 11 :49
% 12 :54
% 13 :54
% 14 :48
LEN = 48;
%%
%读取发票图片
%数据格式一
SEL= 1;
I0 = imread('TICKET\\14.png');
figure;
subplot(221);
imshow(I0);
title('原始图像');
%%
%数字提取
%区域定位
[I1,I2,I3,I4] = func_area_find(I0,alpha);
subplot(222);
imshow(I2,[]);
title('待检测区域定位后图像');
subplot(223);
imshow(I3,[]);
title('待检测区域定位后图像灰度图');
%分区域进行二值化
subplot(224);
imshow(I4,[]);
title('分区域进行二值化');
%提取需要检测的车号,日期,上车时间1,3,4行
[Car_Num,DATE,DONE_Num] = func_position(I4,I2);
figure;
subplot(311);
imshow(Car_Num,[]);
title('车号');
subplot(312);
imshow(DATE,[]);
title('日期');
subplot(313);
imshow(DONE_Num,[]);
title('上车时间');
%将字符字母数字进行分割
[Car_Nums,DATEs,DONE_Nums] = func_segment(Car_Num,DATE,DONE_Num,LEN,LL);
%%
%数字识别
%二值
[Car_Nums1,DATEs1,DONE_Nums1] = func_im2bw(Car_Nums,DATEs,DONE_Nums);
[Car_Nums2,DATEs2,DONE_Nums2] = func_im2bw2(Car_Nums1,DATEs1,DONE_Nums1,SEL);
%识别
OUT1 = func_reg(Car_Nums2);
OUT2 = func_reg(DATEs2);
OUT3 = func_reg(DONE_Nums2);
OUT1
OUT2
OUT3
OUT1 = OUT1;
OUT2 = OUT2;
OUT3 = OUT3;
%保存
fid = fopen('save.txt','wt');
for i = 1:3
for j = 1:length(OUTi)
tmps = cell2mat(OUTi(j));
fprintf(fid,'%c ',tmps);
end
fprintf(fid,'\\n\\n');
end
fclose(fid);
3.操作步骤与仿真结论
对于任何发票图片,对进行分割,识别,并提取3行数据 (车号,日期,上车时间)并输出。为方便起见,车号统一为6位数字字母组合,日期输出为月日年的8位数字,上车时间为4位数字。准确率:在照片清晰情况下,能保证能输出正确,有点倾斜和模糊的情况下能保持80%或能展示即可。
这里,数字定位的仿真效果如下所示:
这里,数字提取的仿真效果如下所示:
这里,目标数字分割效果如下所示:
这里,数字字母识别效果如下所示:
4.参考文献
[1]王佳. 发票印刷体数字识别方法的研究[J]. 2016.
A09-38
5.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
以上是关于发票识别基于图像形态学处理的发票数字识别的MATLAB仿真的主要内容,如果未能解决你的问题,请参考以下文章
基于PaddleOCR实现AI发票识别的Asp.net Core应用
发票识别基于matlab GUI模板匹配发票识别含Matlab源码 2337期