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
c18d2bad
authored
2023-01-05 14:58:35 +0800
by
周伟奇
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
add FSM ocr result
1 parent
cd2068d7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
108 additions
and
15 deletions
src/apps/doc/consts.py
src/apps/doc/management/commands/ocr_process.py
src/apps/doc/models.py
src/common/electronic_hil_contract/get_char_fsm.py
src/common/tools/mssql_script24.py
src/apps/doc/consts.py
View file @
c18d2ba
...
...
@@ -1541,6 +1541,9 @@ SE_AFC_CON_MAP = {
'还款账号'
:
(
2
,
2
,
'还款账户'
,
'账号'
),
'户名'
:
(
2
,
2
,
'还款账户'
,
'户名'
),
'开户行'
:
(
2
,
2
,
'还款账户'
,
'开户行'
),
'收款账号'
:
(
2
,
2
,
'借款人收款账户'
,
'账号'
),
'收款户名'
:
(
2
,
2
,
'借款人收款账户'
,
'户名'
),
'收款开户行'
:
(
2
,
2
,
'借款人收款账户'
,
'开户行'
),
'借款人签字及时间'
:
(
1
,
1
,
'借款人签字及时间'
,
None
),
...
...
@@ -1580,9 +1583,12 @@ SE_HIL_CON_1_MAP = {
'融资成本总额'
:
(
5
,
4
,
7
,
'融资成本总额'
,
None
),
'租期'
:
(
5
,
4
,
7
,
'租期'
,
None
),
'还款计划表'
:
(
5
,
5
,
7
,
'付款计划表'
,
None
),
'还款账号'
:
(
5
,
5
,
7
,
'银行账户-银行账号'
,
None
),
'户名'
:
(
5
,
5
,
7
,
'银行账户-户名'
,
None
),
'开户行'
:
(
5
,
5
,
7
,
'银行账户-开户行'
,
None
),
'还款账号'
:
(
5
,
6
,
7
,
'银行账户-银行账号'
,
None
),
'户名'
:
(
5
,
6
,
7
,
'银行账户-户名'
,
None
),
'开户行'
:
(
5
,
6
,
7
,
'银行账户-开户行'
,
None
),
'收款账号'
:
(
5
,
5
,
7
,
'收款银行账户-银行账号'
,
None
),
'收款户名'
:
(
5
,
5
,
7
,
'收款银行账户-户名'
,
None
),
'收款开户行'
:
(
5
,
5
,
7
,
'收款银行账户-开户行'
,
None
),
'ASP项目详情'
:
(
5
,
4
,
7
,
'车辆附加产品明细表'
,
None
),
'承租人法定代表人或授权代表'
:
(
1
,
1
,
7
,
'承租人-法定代表人或授权代表'
,
None
),
'共同承租人法定代表人或授权代表'
:
(
1
,
1
,
7
,
'共同承租人-法定代表人或授权代表'
,
None
),
...
...
@@ -1638,6 +1644,39 @@ SE_HIL_CON_MAP = {
HIL_CONTRACT_3_CLASSIFY
:
SE_HIL_CON_3_MAP
,
}
SE_FSM_WEP_MAP
=
{
'客户姓名'
:
(
1
,
'客户姓名'
),
'证件类型'
:
(
1
,
'证件类型'
),
'证件号码'
:
(
1
,
'证件号码'
),
'合同价格(小写)'
:
(
1
,
'合同价格(小写)'
),
'客户签名'
:
(
1
,
'客户签名'
),
'签单日期'
:
(
1
,
'签单日期'
),
}
SE_FSM_MSI_MAP
=
{
'客户姓名'
:
(
1
,
'客户姓名'
),
'证件类型'
:
(
1
,
'证件类型'
),
'证件号码'
:
(
1
,
'证件号码'
),
'合同价格(小写)'
:
(
1
,
'合同价格(小写)'
),
'客户签名'
:
(
2
,
'客户签名'
),
'签单日期'
:
(
2
,
'签单日期'
),
}
SE_FSM_SC_MAP
=
{
'姓名'
:
(
1
,
'姓名'
),
'证件类型'
:
(
1
,
'证件类型'
),
'证件号码'
:
(
1
,
'证件号码'
),
'总价'
:
(
1
,
'总价'
),
'客户签名'
:
(
12
,
'客户签名'
),
'签单日期'
:
(
12
,
'签单日期'
),
}
SE_FSM_CON_MAP
=
{
FSM_CONTRACT_WEP_CLASSIFY
:
SE_FSM_WEP_MAP
,
FSM_CONTRACT_MSI_CLASSIFY
:
SE_FSM_MSI_MAP
,
FSM_CONTRACT_SC_CLASSIFY
:
SE_FSM_SC_MAP
,
}
SE_AFC_CON_QRS_FIELD
=
[
'合同编号'
]
SE_AFC_CON_FIELD
=
[
'合同编号-每页'
,
'所购车辆价格-小写-重要条款'
,
'车架号-重要条款'
,
'贷款本金金额-重要条款'
,
'贷款期限-重要条款'
,
'车辆贷款本金金额-重要条款'
,
'附加产品融资贷款本金总额-重要条款'
,
'所购车辆价格'
,
'车架号'
,
'经销商'
,
...
...
src/apps/doc/management/commands/ocr_process.py
View file @
c18d2ba
...
...
@@ -998,7 +998,7 @@ class Command(BaseCommand, LoggerMixin):
res
.
setdefault
(
consts
.
ALL_POSITION_KEY
,
dict
())[
key
]
=
page_info_dict
.
get
(
str
(
pno
),
{})
.
get
(
consts
.
ALL_POSITION_KEY
,
{})
.
get
(
key1
,
[])
license_summary
[
classify
]
=
[
res
]
elif
classify
in
consts
.
SE_HIL_CON_MAP
:
# TODO FSM新合同写入数据库用于比对
elif
classify
in
consts
.
SE_HIL_CON_MAP
:
res
=
{}
for
key
,
(
pno1
,
pno2
,
end_idx
,
key1
,
key2
)
in
consts
.
SE_HIL_CON_MAP
[
classify
]
.
items
():
if
pno1
is
None
:
...
...
@@ -1022,7 +1022,14 @@ class Command(BaseCommand, LoggerMixin):
res
[
key
]
=
tmp_res
res
.
setdefault
(
consts
.
IMG_PATH_KEY
,
dict
())[
key
]
=
page_info_dict
.
get
(
str
(
img_pno
),
{})
.
get
(
consts
.
IMG_PATH_KEY
,
''
)
license_summary
[
classify
]
=
[
res
]
elif
classify
in
consts
.
SE_FSM_CON_MAP
:
res
=
{}
for
key
,
(
pno1
,
key1
)
in
consts
.
SE_FSM_CON_MAP
[
classify
]
.
items
():
res
[
key
]
=
page_info_dict
.
get
(
str
(
pno1
),
{})
.
get
(
key1
)
res
.
setdefault
(
consts
.
IMG_PATH_KEY
,
dict
())[
key
]
=
page_info_dict
.
get
(
str
(
img_pno
),
{})
.
get
(
consts
.
IMG_PATH_KEY
,
''
)
license_summary
[
classify
]
=
[
res
]
def
rebuild_bs_summary
(
self
,
bs_summary
,
unknown_summary
):
...
...
src/apps/doc/models.py
View file @
c18d2ba
...
...
@@ -329,6 +329,9 @@ class AFCOCRResult(models.Model):
hil_contract_2_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同2"
)
hil_contract_3_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同3"
)
qrs_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"AFC合同确认书"
)
fsm_wep_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-WEP"
)
fsm_msi_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-MSI"
)
fsm_sc_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-SC"
)
update_time
=
models
.
DateTimeField
(
auto_now
=
True
,
verbose_name
=
'修改时间'
)
create_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
'创建时间'
)
...
...
@@ -365,6 +368,9 @@ class HILOCRResult(models.Model):
hil_contract_2_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同2"
)
hil_contract_3_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同3"
)
qrs_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"AFC合同确认书"
)
fsm_wep_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-WEP"
)
fsm_msi_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-MSI"
)
fsm_sc_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-SC"
)
update_time
=
models
.
DateTimeField
(
auto_now
=
True
,
verbose_name
=
'修改时间'
)
create_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
'创建时间'
)
...
...
@@ -400,6 +406,9 @@ class AFCSEOCRResult(models.Model):
hil_contract_2_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同2"
)
hil_contract_3_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同3"
)
qrs_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"AFC合同确认书"
)
fsm_wep_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-WEP"
)
fsm_msi_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-MSI"
)
fsm_sc_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-SC"
)
update_time
=
models
.
DateTimeField
(
auto_now
=
True
,
verbose_name
=
'修改时间'
)
create_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
'创建时间'
)
...
...
@@ -436,6 +445,9 @@ class HILSEOCRResult(models.Model):
hil_contract_2_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同2"
)
hil_contract_3_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"HIL合同3"
)
qrs_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"AFC合同确认书"
)
fsm_wep_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-WEP"
)
fsm_msi_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-MSI"
)
fsm_sc_ocr
=
models
.
TextField
(
null
=
True
,
verbose_name
=
"FSM-SC"
)
update_time
=
models
.
DateTimeField
(
auto_now
=
True
,
verbose_name
=
'修改时间'
)
create_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
'创建时间'
)
...
...
src/common/electronic_hil_contract/get_char_fsm.py
View file @
c18d2ba
...
...
@@ -56,12 +56,12 @@ class Finder:
"融资成本总额"
:
self
.
item
,
"租期"
:
self
.
item
,
"付款计划表"
:
self
.
item
,
"
承租人收款
账户-户名"
:
self
.
item
,
"
承租人收款
账户-银行账号"
:
self
.
item
,
"
承租人收款
账户-开户行"
:
self
.
item
,
"
承租人扣款
账户-户名"
:
self
.
item
,
"
承租人扣款
账户-银行账号"
:
self
.
item
,
"
承租人扣款
账户-开户行"
:
self
.
item
,
"
收款银行
账户-户名"
:
self
.
item
,
"
收款银行
账户-银行账号"
:
self
.
item
,
"
收款银行
账户-开户行"
:
self
.
item
,
"
银行
账户-户名"
:
self
.
item
,
"
银行
账户-银行账号"
:
self
.
item
,
"
银行
账户-开户行"
:
self
.
item
,
"签字页-承租人姓名"
:
self
.
item
,
"签字页-承租人签章"
:
self
.
item
,
...
...
@@ -1260,18 +1260,18 @@ class Finder:
self
.
init_result
[
'付款计划表'
]
=
repayment_schedule
# 找承租人收款账户户名、银行账号、银行
name
=
self
.
get_key_value
(
key
=
'户名:'
,
page_num
=
'4'
)
self
.
init_result
[
'
承租人收款
账户-户名'
]
=
name
self
.
init_result
[
'
收款银行
账户-户名'
]
=
name
account
=
self
.
get_key_value
(
key
=
'银行账号:'
,
page_num
=
'4'
)
self
.
init_result
[
'
承租人收款
账户-银行账号'
]
=
account
self
.
init_result
[
'
收款银行
账户-银行账号'
]
=
account
bank
=
self
.
get_key_value
(
key
=
'开户银行:'
,
page_num
=
'4'
)
self
.
init_result
[
'承租人收款账户-开户行'
]
=
bank
# 找承租人扣款账户户名、银行账号、银行
name
=
self
.
get_key_value
(
key
=
'户名:'
,
page_num
=
'5'
)
self
.
init_result
[
'
承租人扣款
账户-户名'
]
=
name
self
.
init_result
[
'
银行
账户-户名'
]
=
name
account
=
self
.
get_key_value
(
key
=
'银行账号:'
,
page_num
=
'5'
)
self
.
init_result
[
'
承租人扣款
账户-银行账号'
]
=
account
self
.
init_result
[
'
银行
账户-银行账号'
]
=
account
bank
=
self
.
get_key_value
(
key
=
'开户银行:'
,
page_num
=
'5'
)
self
.
init_result
[
'
承租人扣款
账户-开户行'
]
=
bank
self
.
init_result
[
'
银行
账户-开户行'
]
=
bank
# 找签字页上的系列信息
# 承租人姓名、签章
...
...
src/common/tools/mssql_script24.py
0 → 100644
View file @
c18d2ba
import
pyodbc
hil_sql
=
"""
ALTER TABLE hil_ocr_result ADD fsm_wep_ocr nvarchar(max);
ALTER TABLE hil_ocr_result ADD fsm_msi_ocr nvarchar(max);
ALTER TABLE hil_ocr_result ADD fsm_sc_ocr nvarchar(max);
ALTER TABLE hil_se_ocr_result ADD fsm_wep_ocr nvarchar(max);
ALTER TABLE hil_se_ocr_result ADD fsm_msi_ocr nvarchar(max);
ALTER TABLE hil_se_ocr_result ADD fsm_sc_ocr nvarchar(max);
"""
afc_sql
=
"""
ALTER TABLE afc_ocr_result ADD fsm_wep_ocr nvarchar(max);
ALTER TABLE afc_ocr_result ADD fsm_msi_ocr nvarchar(max);
ALTER TABLE afc_ocr_result ADD fsm_sc_ocr nvarchar(max);
ALTER TABLE afc_se_ocr_result ADD fsm_wep_ocr nvarchar(max);
ALTER TABLE afc_se_ocr_result ADD fsm_msi_ocr nvarchar(max);
ALTER TABLE afc_se_ocr_result ADD fsm_sc_ocr nvarchar(max);
"""
hil_cnxn
=
pyodbc
.
connect
(
'DRIVER={ODBC Driver 17 for SQL Server};'
,
autocommit
=
True
)
hil_cursor
=
hil_cnxn
.
cursor
()
hil_cursor
.
execute
(
hil_sql
)
hil_cursor
.
close
()
hil_cnxn
.
close
()
afc_cnxn
=
pyodbc
.
connect
(
'DRIVER={ODBC Driver 17 for SQL Server};'
,
autocommit
=
True
)
afc_cursor
=
afc_cnxn
.
cursor
()
afc_cursor
.
execute
(
afc_sql
)
afc_cursor
.
close
()
afc_cnxn
.
close
()
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