小编最近试试识别身份证上面的文字。
第一步还是图像分割,第一步还是提取文本行,然后提取字段。
看上去,第一个感觉就是所有文字都是黑色的。可以简单过滤一下图片的RGB通道,剩下黑色部分,如下是结果:
1
2
|
boundary
=
(
[
0
,
0
,
0
]
,
[
100
,
100
,
100
]
)
preprocess_bg_mask
=
PreprocessBackgroundMask
(
boundary
)
|
基本上所有背景都被去掉了,但是还有头像会阻碍检测文本行,所以把头像部分也去掉了。
1
2
|
left_half_id_card_img_mask
=
np
.
copy
(
id_card_img_mask
)
left_half_id_card_img_mask
[
:
,
norm_width
/
2
:
]
=
0
|
这样往左投影求和就可以找到文本行。然后在图片上,画上文本行即可。
然后每一行进行垂直投影,就可以找到所有字段的位置,当然还有一些噪音。
1
2
3
4
5
6
7
8
9
10
11
12
|
## char extraction
for
line_range
in
line_ranges
:
start_y
,
end_y
=
line_range
end_y
+=
1
line_img
=
id_card_img_mask
[
start_y
:
end_y
]
vertical_sum
=
np
.
sum
(
line_img
,
axis
=
0
)
vertical_peek_ranges
=
extract_peek_ranges_from_array
(
vertical_sum
,
minimun_val
=
40
,
minimun_range
=
1
)
vertical_peek_ranges2d
.
append
(
vertical_peek_ranges
)
vertical_peek_ranges2d
=
merge_chars_into_line_segments
(
vertical_peek_ranges2d
)
|
然后我们可以定义
第一行,第一个字段是名字
第二行,第一个字段是性别
第二行,第二个字段是民族
等等,如此类推。。。下面是以不同的颜色代表不同的字段的调试图片
如何通过Docker安装虫数据的代码可以见 github
运行一下命令可以获取结果:
1
2
3
4
|
export
CAFFE_MODEL
=
/
opt
/
deep_ocr
/
data
/
trained_models
/
mnist_model
export
DEEP_OCR_ROOT
=
/
opt
/
deep_ocr
deep_ocr_id_card_segmentation
--
img
$
DEEP_OCR_ROOT
/
data
/
id_card_img
.
jpg
\
--
debug_path
/
workspace
/
debug
|
所有身份证的图像分割图片保存在这里 “/workspace/debug”,具体要看用户映射到本机电脑的哪个地方。
下一篇文章将会整合这个分割算法,对身份证上面的字段识别。
编憋了两周,终于憋出了一个简单的身份证识别系统。
基于图像识别,暂时没有加语义上面的纠正。
上一篇文章介绍了如何分割字段,这篇文章主要显示识别结果。
对每个字段的识别方法类似于Lesson 1: 如何做文本行和文字分割分割每个字符。
如何安装请见github项目的首页 通过 Docker 安装
1
2
3
4
5
|
docker
run
-
ti
--
volume
=
$
{
HOME
}
/
deep_ocr_workspace
:
/
workspace
jinpengli
/
deep_ocr_cpu_docker
:
latest
/
bin
/
bash
cd
/
opt
/
deep_ocr
git
pull
origin
master
export
WORKSPACE
=
/
workspace
deep_ocr_id_card_reco
--
img
$
DEEP_OCR_ROOT
/
data
/
id_card_img
.
jpg
--
debug_path
/
tmp
/
debug
--
cls_sim
$
{
WORKSPACE
}
/
data
/
chongdata_caffe_cn_sim_digits_64_64
--
cls_ua
$
{
WORKSPACE
}
/
data
/
chongdata_train_ualpha_digits_64_64
|
识别结果为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
.
.
.
ocr
res
:
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
name
韦小宝
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
address
北京市东城区累山前街
4号
紫禁城敬事房
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
month
12
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
minzu
汉
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
year
1654
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
sex
男
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
id
1X21441114X221243X
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
===
day
20
|
暂时不是很稳定,需要加一些语义模型。等等小编吧。。。。