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
aeefa795
authored
2021-04-09 19:23:55 +0800
by
周伟奇
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
fix compare
1 parent
d931d082
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
60 additions
and
24 deletions
src/celery_compare/tasks.py
src/celery_compare/tasks.py
View file @
aeefa79
...
...
@@ -24,44 +24,64 @@ def get_order_dict(src_dict, order_tuple):
return
order_dict
def
field_compare
(
info_dict
,
ocr_res_dict
,
ocr_field
,
compare_list
,
res_set
,
diff_idx
=
None
):
def
field_compare
(
info_dict
,
ocr_res_dict
,
ocr_field
,
compare_list
,
res_set
):
is_find
=
False
find_dict
=
{}
ocr_res_str
=
ocr_res_dict
.
get
(
ocr_field
)
if
ocr_res_str
is
not
None
:
ocr_res_list
=
json
.
loads
(
ocr_res_str
)
res_len
=
len
(
ocr_res_list
)
#
res_len = len(ocr_res_list)
for
ocr_res
in
ocr_res_list
:
if
is_find
:
break
for
idx
,
compare_tuple
in
enumerate
(
compare_list
):
input_str
=
info_dict
.
get
(
compare_tuple
[
0
])
ocr_str
=
ocr_res
.
get
(
compare_tuple
[
1
],
''
)
compare_res
=
getattr
(
cp
,
compare_tuple
[
2
])(
info_dict
.
get
(
compare_tuple
[
0
]),
ocr_res
.
get
(
compare_tuple
[
1
]),
**
compare_tuple
[
3
])
if
idx
==
0
and
compare_res
==
consts
.
RESULT_N
and
res_len
!=
1
:
if
idx
==
0
and
compare_res
==
consts
.
RESULT_N
:
break
is_find
=
True
find_dict
=
ocr_res
info_dict
[
compare_tuple
[
0
]
+
'Result'
]
=
compare_res
if
input_str
is
not
None
:
info_dict
[
compare_tuple
[
0
]]
=
ocr_str
res_set
.
add
(
compare_res
)
if
not
is_find
:
res_set
.
add
(
consts
.
RESULT_N
)
for
compare_tuple
in
compare_list
:
info_dict
[
compare_tuple
[
0
]
+
'Result'
]
=
consts
.
RESULT_N
if
diff_idx
is
not
None
:
diff_field
=
compare_list
[
diff_idx
][
0
]
+
'Result'
if
info_dict
.
get
(
diff_field
)
==
consts
.
RESULT_N
:
if
is_find
:
diff_value
=
find_dict
.
get
(
compare_list
[
diff_idx
][
1
],
consts
.
RESULT_N
)
elif
ocr_res_str
is
not
None
:
info_dict
[
compare_tuple
[
0
]
+
'Result'
]
=
consts
.
RESULT_NA
if
compare_tuple
[
0
]
in
info_dict
:
info_dict
[
compare_tuple
[
0
]]
=
''
def
usedcar_info_compare
(
info_dict
,
ocr_res_dict
,
ocr_field
,
compare_list
,
res_set
):
no_match_vino
=
[]
is_find
=
False
ocr_res_str
=
ocr_res_dict
.
get
(
ocr_field
)
if
ocr_res_str
is
not
None
:
ocr_res_list
=
json
.
loads
(
ocr_res_str
)
for
ocr_res
in
ocr_res_list
:
if
ocr_res
.
get
(
compare_list
[
diff_idx
][
1
]):
diff_value
=
ocr_res
.
get
(
compare_list
[
diff_idx
][
1
])
if
is_find
:
break
else
:
diff_value
=
consts
.
RESULT_N
else
:
diff_value
=
consts
.
RESULT_N
info_dict
[
diff_field
]
=
diff_value
for
idx
,
compare_tuple
in
enumerate
(
compare_list
):
input_str
=
info_dict
.
get
(
compare_tuple
[
0
])
ocr_str
=
ocr_res
.
get
(
compare_tuple
[
1
],
''
)
compare_res
=
getattr
(
cp
,
compare_tuple
[
2
])(
info_dict
.
get
(
compare_tuple
[
0
]),
ocr_res
.
get
(
compare_tuple
[
1
]),
**
compare_tuple
[
3
])
if
idx
==
0
and
compare_res
==
consts
.
RESULT_N
:
no_match_vino
.
append
(
ocr_str
)
break
is_find
=
True
info_dict
[
compare_tuple
[
0
]
+
'Result'
]
=
compare_res
if
input_str
is
not
None
:
info_dict
[
compare_tuple
[
0
]]
=
ocr_str
res_set
.
add
(
compare_res
)
if
not
is_find
:
res_set
.
add
(
consts
.
RESULT_N
)
for
compare_tuple
in
compare_list
:
info_dict
[
compare_tuple
[
0
]
+
'Result'
]
=
consts
.
RESULT_N
if
compare_tuple
[
0
]
in
info_dict
:
info_dict
[
compare_tuple
[
0
]]
=
''
return
is_find
,
no_match_vino
@app.task
...
...
@@ -117,7 +137,7 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
order_individual_cus_info
=
get_order_dict
(
individual_cus_info
,
consts
.
IN_ORDER
)
# sep营业执照
if
is_sep
and
order_individual_cus_info
.
get
(
'companyName'
)
is
not
None
:
field_compare
(
order_individual_cus_info
,
ocr_res_dict
,
consts
.
BL_OCR_FIELD
,
consts
.
TCSEP
,
res_set
,
2
)
field_compare
(
order_individual_cus_info
,
ocr_res_dict
,
consts
.
BL_OCR_FIELD
,
consts
.
TCSEP
,
res_set
)
# 个人信息证件
id_type
=
order_individual_cus_info
.
get
(
'idType'
)
...
...
@@ -134,10 +154,26 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
usedcar_info
=
json
.
loads
(
last_obj
.
usedcar_info
)
order_usedcar_info
=
get_order_dict
(
usedcar_info
,
consts
.
UC_ORDER
)
field_compare
(
order_usedcar_info
,
ocr_res_dict
,
consts
.
MVC_OCR_FIELD
,
consts
.
PCUSD_MVC
,
res_set
,
0
)
if
order_usedcar_info
[
consts
.
PCUSD_MVC
[
0
][
0
]
+
'Result'
]
==
consts
.
RESULT_Y
:
field_compare
(
order_usedcar_info
,
ocr_res_dict
,
consts
.
DL_OCR_FIELD
,
consts
.
PCUSD_DL
,
res_set
,
0
)
mvc_find
,
mvc_vinos
=
usedcar_info_compare
(
order_usedcar_info
,
ocr_res_dict
,
consts
.
MVC_OCR_FIELD
,
consts
.
PCUSD_MVC
,
res_set
)
# if order_usedcar_info[consts.PCUSD_MVC[0][0] + 'Result'] == consts.RESULT_Y:
dl_find
,
dl_vinos
=
usedcar_info_compare
(
order_usedcar_info
,
ocr_res_dict
,
consts
.
DL_OCR_FIELD
,
consts
.
PCUSD_DL
,
res_set
)
if
mvc_find
is
True
and
dl_find
is
False
:
vino
=
dl_vinos
[
0
]
if
len
(
dl_vinos
)
>
0
else
''
order_usedcar_info
[
consts
.
PCUSD_MVC
[
0
][
0
]]
=
vino
elif
mvc_find
is
False
and
dl_find
is
True
:
vino
=
mvc_vinos
[
0
]
if
len
(
mvc_vinos
)
>
0
else
''
order_usedcar_info
[
consts
.
PCUSD_MVC
[
0
][
0
]]
=
vino
order_usedcar_info
[
consts
.
PCUSD_MVC
[
0
][
0
]
+
'Result'
]
=
consts
.
RESULT_N
elif
mvc_find
is
False
and
dl_find
is
False
:
vino_list
=
[]
if
len
(
mvc_vinos
)
>
0
:
vino_list
.
append
(
mvc_vinos
[
0
])
if
len
(
dl_vinos
)
>
0
:
vino_list
.
append
(
dl_vinos
[
0
])
vino
=
'、'
.
join
(
vino_list
)
order_usedcar_info
[
consts
.
PCUSD_MVC
[
0
][
0
]]
=
vino
comparison_res
[
'OCR_Input'
][
'usedCarInfo'
]
=
order_usedcar_info
...
...
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