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
OUT{1} = OUT1;
OUT{2} = OUT2;
OUT{3} = OUT3;
%保存
fid = fopen('save.txt','wt');
for i = 1:3
for j = 1:length(OUT{i})
tmps = cell2mat(OUT{i}(j));
fprintf(fid,'%c ',tmps);
end
fprintf(fid,'\n\n');
end
fclose(fid);
3.操作手順とシミュレーションの結論
請求書の画像については、3行のデータ(車両番号、日付、集荷時刻)をセグメント化、識別、抽出して出力します。便宜上、車番号は6桁と文字の組み合わせで統一され、日付出力は月、日、年の8桁、搭乗時刻は4桁です。精度:鮮明な写真の場合、出力は正確であることが保証され、80%に維持されるか、少し傾いたりぼやけたりした場合に表示されます。
ここで、デジタルポジショニングのシミュレーション効果は次のとおりです。
ここで、デジタル抽出のシミュレーション効果は次のとおりです。
ここで、ターゲット桁のセグメンテーション効果は次のとおりです。
ここで、数字と文字の認識の効果は次のとおりです。
4.参考文献
[1]WangJia。印刷された請求書のデジタル認識方法に関する研究[J].2016。
A09-38
5.完全なソースコードを入手する方法
方法1:WeChatまたはQQ経由でブロガーに連絡する
方法2:MATLAB / FPGAチュートリアルを購読し、チュートリアルケースと2つの完全なソースコードを無料で入手します