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
bfa90f18
authored
2021-09-06 17:17:39 +0800
by
周伟奇
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
se compare yh part 2
1 parent
90b532a7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
27 deletions
src/apps/doc/consts.py
src/celery_compare/tasks.py
src/common/tools/comparison.py
src/apps/doc/consts.py
View file @
bfa90f1
...
...
@@ -1350,6 +1350,8 @@ DDA_EN = 'DDA'
HMH_EN
=
'Mortgage Waiver Letter'
JYPZ_EN
=
'Used Car Document'
SKIP_CARD
=
{
ID_EN
,
RP_EN
}
ID_COMPARE_LOGIC
=
{
'customerName'
:
(
'姓名'
,
'se_name_compare'
,
{}),
...
...
@@ -1453,7 +1455,7 @@ JYPZ_COMPARE_LOGIC = {
'vehicleTransactionAmount'
:
(
'price'
,
'se_amount_compare'
,
{}),
'customerName'
:
(
'buyer_name'
,
'se_name_compare'
,
{
'is_passport'
:
True
}),
'idNum'
:
(
'buyer_id'
,
'se_contain_compare_2'
,
{}),
'date'
:
(
'date'
,
'se_date_compare_2'
,
{
'three_month'
:
True
}),
'date'
:
(
'date'
,
'se_date_compare_2'
,
{}),
}
HMH_COMPARE_LOGIC
=
{
...
...
@@ -1464,6 +1466,8 @@ HMH_COMPARE_LOGIC = {
# MVC_OCR_FIELD = 'mvc_ocr'
SE_DETECT_CARD
=
[
UCI_EN
,
JYPZ_EN
,
HMH_EN
]
SE_COMPARE_FIELD
=
{
ID_EN
:
(
IC_OCR_FIELD
,
ID_COMPARE_LOGIC
,
True
),
PP_EN
:
(
PP_OCR_FIELD
,
PP_COMPARE_LOGIC
,
False
),
...
...
src/celery_compare/tasks.py
View file @
bfa90f1
...
...
@@ -706,7 +706,7 @@ def ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res
traceback
.
format_exc
()))
def
get_se_compare_info
(
last_obj
,
application_entity
):
def
get_se_compare_info
(
last_obj
,
application_entity
,
detect_list
):
compare_info
=
{}
individual_info_dict
=
{}
main_role_info
=
{}
...
...
@@ -832,10 +832,14 @@ def get_se_compare_info(last_obj, application_entity):
for
jypz_field
in
consts
.
SE_USED_FIELD
:
jypz_field_input
.
append
((
jypz_field
,
vehicle_info_dict
[
jypz_field
]))
jypz_field_input
.
append
((
consts
.
SE_GB_USED_FIELD
[
-
1
],
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
vehicle_info
[
consts
.
JYPZ_EN
]
=
jypz_field_input
if
not
detect_list
[
0
]:
vehicle_info
[
consts
.
UCI_EN
]
=
vehicle_field_input
if
not
detect_list
[
1
]:
vehicle_info
[
consts
.
JYPZ_EN
]
=
jypz_field_input
if
detect_list
[
0
]
and
detect_list
[
1
]:
vehicle_info
[
consts
.
UCI_EN
]
=
vehicle_field_input
compare_info
[
'vehicleInfo'
]
=
vehicle_info
bank_info_dict
=
json
.
loads
(
last_obj
.
bank_info
)
...
...
@@ -861,13 +865,14 @@ def get_se_compare_info(last_obj, application_entity):
bank_info
[
consts
.
DDA_EN
]
=
dda_field_input
compare_info
[
'bankInfo'
]
=
bank_info
other_info
=
{}
hmh_field_input
=
[]
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
0
],
hmh_name
))
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
1
],
hmh_id
))
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
2
],
last_obj
.
application_id
))
other_info
[
consts
.
HMH_EN
]
=
hmh_field_input
compare_info
[
'other'
]
=
other_info
if
not
detect_list
[
-
1
]:
other_info
=
{}
hmh_field_input
=
[]
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
0
],
hmh_name
))
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
1
],
hmh_id
))
hmh_field_input
.
append
((
consts
.
SE_HMH_FIELD
[
2
],
last_obj
.
application_id
))
other_info
[
consts
.
HMH_EN
]
=
hmh_field_input
compare_info
[
'other'
]
=
other_info
return
compare_info
...
...
@@ -876,6 +881,7 @@ def se_compare_license(license_en, ocr_res_dict, field_list):
ocr_field
,
compare_logic
,
special_expiry_date
=
consts
.
SE_COMPARE_FIELD
[
license_en
]
is_find
=
False
no_ocr_result
=
False
result_field_list
=
[]
ocr_res_str
=
ocr_res_dict
.
get
(
ocr_field
)
if
ocr_res_str
is
not
None
:
...
...
@@ -921,12 +927,14 @@ def se_compare_license(license_en, ocr_res_dict, field_list):
img_path
=
ocr_res_list
[
res_idx
]
.
get
(
consts
.
IMG_PATH_KEY
,
''
)
if
result
==
consts
.
RESULT_N
else
empty_str
error_type
=
empty_error_type
if
result
==
consts
.
RESULT_Y
else
ErrorType
.
OCR
.
value
result_field_list
.
append
((
name
,
value
,
result
,
ocr_str
,
img_path
,
error_type
))
else
:
no_ocr_result
=
True
if
not
is_find
:
for
name
,
value
in
field_list
:
result_field_list
.
append
((
name
,
value
,
consts
.
RESULT_N
,
empty_str
,
empty_str
,
ErrorType
.
NF
.
value
))
return
result_field_list
return
result_field_list
,
no_ocr_result
def
se_mvc34_compare
(
license_en
,
ocr_res_dict
,
field_list
):
...
...
@@ -1012,13 +1020,14 @@ def se_compare_process(compare_info, ocr_res_dict):
for
license_dict
in
license_list
:
for
license_en
,
field_list
in
license_dict
.
items
():
failure_field
=
[]
result_field_list
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
result_field_list
,
no_ocr_result
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
for
name
,
value
,
result
,
ocr_str
,
img_path
,
error_type
in
result_field_list
:
total_fields
+=
1
if
result
==
consts
.
RESULT_N
:
failed_count
+=
1
successful_at_this_level
=
False
failure_field
.
append
(
name
)
if
license_en
not
in
consts
.
SKIP_CARD
or
not
no_ocr_result
:
total_fields
+=
1
if
result
==
consts
.
RESULT_N
:
failed_count
+=
1
successful_at_this_level
=
False
failure_field
.
append
(
name
)
compare_result
.
append
(
{
consts
.
HEAD_LIST
[
0
]:
info_key
,
...
...
@@ -1040,14 +1049,16 @@ def se_compare_process(compare_info, ocr_res_dict):
failure_field
=
[]
if
license_en
==
consts
.
MVC34_EN
:
result_field_list
=
se_mvc34_compare
(
license_en
,
ocr_res_dict
,
field_list
)
no_ocr_result
=
False
else
:
result_field_list
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
result_field_list
,
no_ocr_result
=
se_compare_license
(
license_en
,
ocr_res_dict
,
field_list
)
for
name
,
value
,
result
,
ocr_str
,
img_path
,
error_type
in
result_field_list
:
total_fields
+=
1
if
result
==
consts
.
RESULT_N
:
failed_count
+=
1
successful_at_this_level
=
False
failure_field
.
append
(
name
)
if
license_en
!=
consts
.
DDA_EN
or
not
no_ocr_result
:
total_fields
+=
1
if
result
==
consts
.
RESULT_N
:
failed_count
+=
1
successful_at_this_level
=
False
failure_field
.
append
(
name
)
compare_result
.
append
(
{
consts
.
HEAD_LIST
[
0
]:
info_key
,
...
...
@@ -1071,11 +1082,20 @@ def se_compare_process(compare_info, ocr_res_dict):
return
compare_result
,
total_fields
,
failed_count
,
successful_at_this_level
,
failure_reason_str
def
se_result_detect
(
ocr_res_dict
):
detect_list
=
[]
for
license_en
in
consts
.
SE_DETECT_CARD
:
ocr_field
,
_
,
_
=
consts
.
SE_COMPARE_FIELD
[
license_en
]
ocr_res_str
=
ocr_res_dict
.
get
(
ocr_field
)
detect_list
.
append
(
ocr_res_str
is
None
)
return
detect_list
def
se_compare
(
application_id
,
application_entity
,
ocr_res_id
,
last_obj
,
ocr_res_dict
):
try
:
# 比对逻辑
start_time
=
datetime
.
now
()
compare_info
=
get_se_compare_info
(
last_obj
,
application_entity
)
detect_list
=
se_result_detect
(
ocr_res_dict
)
compare_info
=
get_se_compare_info
(
last_obj
,
application_entity
,
detect_list
)
compare_result
,
total_fields
,
failed_count
,
successful_at_this_level
,
failure_reason_str
=
se_compare_process
(
compare_info
,
ocr_res_dict
)
compare_log
.
info
(
'{0} [SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'
.
format
(
...
...
@@ -1094,7 +1114,7 @@ def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res
res_obj
.
application_id
=
application_id
res_obj
.
compare_count
=
total_fields
res_obj
.
failed_count
=
failed_count
res_obj
.
is_finish
=
failed_count
==
0
res_obj
.
is_finish
=
successful_at_this_level
res_obj
.
version
=
'{0}{1}{2}'
.
format
(
consts
.
INFO_SOURCE
[
0
],
consts
.
SPLIT_STR
,
last_obj
.
application_version
)
# res_obj.reason1_count = reason1_count
res_obj
.
result
=
json
.
dumps
(
compare_result
)
...
...
src/common/tools/comparison.py
View file @
bfa90f1
...
...
@@ -203,7 +203,7 @@ class Comparison:
def
se_date_compare
(
self
,
input_str
,
ocr_str
,
**
kwargs
):
if
kwargs
.
get
(
'long'
,
False
):
if
'长期'
in
ocr_str
or
'永久'
in
ocr_str
or
'***'
in
ocr_str
or
'至今'
in
ocr_str
:
if
'长期'
in
ocr_str
or
'永久'
in
ocr_str
or
'***'
in
ocr_str
or
'至今'
in
ocr_str
or
'年—月—日'
in
ocr_str
or
'年 月 日'
in
ocr_str
:
if
kwargs
.
get
(
'today'
,
False
)
or
input_str
in
[
'2099-12-31'
,
'2099-01-01'
,
'2999-12-31'
,
'2999-01-01'
]:
return
self
.
RESULT_Y
else
:
...
...
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