Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
周伟奇
/
bmw-ocr
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
bef16a86
authored
2021-07-14 15:26:27 +0800
by
周伟奇
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'feature/se_compare3' into feature/0611
2 parents
e17f3ffb
9e3f5c24
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
86 additions
and
7 deletions
src/apps/doc/consts.py
src/celery_compare/tasks.py
src/apps/doc/consts.py
View file @
bef16a8
...
...
@@ -1311,7 +1311,8 @@ RP_EN = 'Resident ID'
BL_EN
=
'Business permit'
MVI_EN
=
'newCar Invoice'
UCI_EN
=
'usedCar Invoice'
MVC_EN
=
'Green Book'
MVC_EN
=
'Green Book(1/2)'
MVC34_EN
=
'Green Book(3/4)'
BC_EN
=
'Bank Card'
DDA_EN
=
'DDA'
...
...
@@ -1383,6 +1384,16 @@ MVC_COMPARE_LOGIC = {
# 'date': ('转移登记日期', ),
}
TRANSFER_NAME
=
'姓名/名称'
TRANSFER_NUM
=
'身份证明名称/号码'
TRANSFER_DATE
=
'转移登记日期'
MVC34_COMPARE_LOGIC
=
{
'customerName'
:
(
TRANSFER_NAME
,
'se_company_compare'
,
{}),
'idNum'
:
(
TRANSFER_NUM
,
'se_contain_compare_2'
,
{}),
'date'
:
(
TRANSFER_DATE
,
'se_date_compare_2'
,
{}),
}
BC_COMPARE_LOGIC
=
{
'accountNo'
:
(
'CardNum'
,
'se_common_compare'
,
{}),
'bankName'
:
(
'BankName'
,
'se_both_contain_compare'
,
{}),
...
...
@@ -1411,6 +1422,7 @@ SE_COMPARE_FIELD = {
MVI_EN
:
(
MVI_OCR_FIELD
,
MVI_COMPARE_LOGIC
,
False
),
UCI_EN
:
(
UCI_OCR_FIELD
,
UCI_COMPARE_LOGIC
,
False
),
MVC_EN
:
(
MVC_OCR_FIELD
,
MVC_COMPARE_LOGIC
,
False
),
MVC34_EN
:
(
MVC_OCR_FIELD
,
MVC34_COMPARE_LOGIC
,
False
),
BC_EN
:
(
BC_OCR_FIELD
,
BC_COMPARE_LOGIC
,
False
),
DDA_EN
:
(
DDA_OCR_FIELD
,
DDA_COMPARE_LOGIC
,
False
),
}
...
...
src/celery_compare/tasks.py
View file @
bef16a8
...
...
@@ -577,6 +577,7 @@ def get_se_compare_info(last_obj, application_entity):
vehicle_info
[
consts
.
MVI_EN
]
=
vehicle_field_input
else
:
gb_field_input
=
[]
gb34_field_input
=
[]
for
vehicle_field
in
consts
.
SE_USED_FIELD
:
vehicle_field_input
.
append
((
vehicle_field
,
vehicle_info_dict
[
vehicle_field
]))
for
gb_field
in
consts
.
SE_GB_NEW_FIELD
:
...
...
@@ -584,16 +585,17 @@ def get_se_compare_info(last_obj, application_entity):
if
isinstance
(
company_info
,
tuple
):
vehicle_field_input
.
append
((
consts
.
SE_NEW_ADD_FIELD
[
0
],
company_info
[
0
]))
vehicle_field_input
.
append
((
consts
.
SE_NEW_ADD_FIELD
[
1
],
company_info
[
1
]))
# gb
_field_input.append((consts.SE_GB_USED_FIELD[0], company_info[0]))
# gb
_field_input.append((consts.SE_GB_USED_FIELD[1], company_info[1]))
gb34
_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
0
],
company_info
[
0
]))
gb34
_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
1
],
company_info
[
1
]))
else
:
vehicle_field_input
.
append
((
consts
.
SE_NEW_ADD_FIELD
[
0
],
main_name
))
vehicle_field_input
.
append
((
consts
.
SE_NEW_ADD_FIELD
[
1
],
main_num
))
# gb
_field_input.append((consts.SE_GB_USED_FIELD[0], main_name))
# gb
_field_input.append((consts.SE_GB_USED_FIELD[1], main_num))
# gb
_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date))
gb34
_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
0
],
main_name
))
gb34
_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
1
],
main_num
))
gb34
_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
2
],
last_obj
.
first_submmison_date
))
vehicle_info
[
consts
.
UCI_EN
]
=
vehicle_field_input
vehicle_info
[
consts
.
MVC_EN
]
=
gb_field_input
vehicle_info
[
consts
.
MVC34_EN
]
=
gb34_field_input
compare_info
[
'vehicleInfo'
]
=
vehicle_info
bank_info_dict
=
json
.
loads
(
last_obj
.
bank_info
)
...
...
@@ -677,6 +679,68 @@ def se_compare_license(license_en, ocr_res_dict, field_list):
return
result_field_list
def
se_mvc34_compare
(
license_en
,
ocr_res_dict
,
field_list
):
ocr_field
,
compare_logic
,
_
=
consts
.
SE_COMPARE_FIELD
[
license_en
]
ocr_res_str
=
ocr_res_dict
.
get
(
ocr_field
)
is_find
=
False
result_field_list
=
[]
if
ocr_res_str
is
not
None
:
ocr_res_list
=
json
.
loads
(
ocr_res_str
)
length
=
len
(
ocr_res_list
)
page34_date_dict
=
dict
()
first_res
=
None
for
res_idx
in
range
(
length
-
1
,
-
1
,
-
1
):
if
consts
.
TRANSFER_DATE
in
ocr_res_list
[
res_idx
]:
for
idx
,
transfer_date
in
enumerate
(
ocr_res_list
[
res_idx
]
.
get
(
consts
.
TRANSFER_DATE
,
[])):
try
:
transfer_name
=
ocr_res_list
[
res_idx
]
.
get
(
consts
.
TRANSFER_NAME
,
[])[
idx
]
except
Exception
as
e
:
transfer_name
=
''
try
:
transfer_num
=
ocr_res_list
[
res_idx
]
.
get
(
consts
.
TRANSFER_NUM
,
[])[
idx
]
except
Exception
as
e
:
transfer_num
=
''
core_info
=
{
consts
.
TRANSFER_NAME
:
transfer_name
,
consts
.
TRANSFER_NUM
:
transfer_num
,
consts
.
TRANSFER_DATE
:
transfer_date
}
page34_date_dict
.
setdefault
(
transfer_date
,
[])
.
append
(
core_info
)
if
first_res
is
None
:
first_res
=
core_info
max_date
=
None
for
date_tmp
in
page34_date_dict
.
keys
():
try
:
max_date_part
=
time
.
strptime
(
date_tmp
,
"
%
Y-
%
m-
%
d"
)
except
Exception
as
e
:
pass
else
:
if
max_date
is
None
or
max_date_part
>
max_date
:
max_date
=
max_date_part
if
max_date
is
not
None
or
first_res
is
not
None
:
is_find
=
True
ocr_res
=
first_res
if
max_date
is
None
else
page34_date_dict
[
time
.
strftime
(
'
%
Y-
%
m-
%
d'
,
max_date
)][
0
]
for
name
,
value
in
enumerate
(
field_list
):
ocr_str
=
ocr_res
.
get
(
compare_logic
[
name
][
0
])
if
not
isinstance
(
ocr_str
,
str
):
result
=
consts
.
RESULT_N
ocr_str
=
''
else
:
result
=
getattr
(
cp
,
compare_logic
[
name
][
1
])(
value
,
ocr_str
,
**
compare_logic
[
name
][
2
])
result_field_list
.
append
((
name
,
value
,
result
,
ocr_str
))
if
not
is_find
:
for
name
,
value
in
field_list
:
result_field_list
.
append
((
name
,
value
,
consts
.
RESULT_N
,
''
))
return
result_field_list
def
se_compare_process
(
compare_info
,
ocr_res_dict
):
# individualCusInfo
# corporateCusInfo
...
...
@@ -719,7 +783,10 @@ def se_compare_process(compare_info, ocr_res_dict):
else
:
for
license_en
,
field_list
in
info_value
.
items
():
failure_field
=
[]
result_field_list
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
if
license_en
==
consts
.
MVC34_EN
:
result_field_list
=
se_mvc34_compare
(
license_en
,
ocr_res_dict
,
field_list
)
else
:
result_field_list
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
for
name
,
value
,
result
,
ocr_str
in
result_field_list
:
total_fields
+=
1
if
result
==
consts
.
RESULT_N
:
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment