Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
周伟奇
/
part_of_F3_OCR
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
57ff6bf4
authored
2022-08-09 17:11:33 +0800
by
周伟奇
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
add left
1 parent
43758c7e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
26 deletions
general_extractor/retriever.py
general_extractor/retriever.py
View file @
57ff6bf
...
...
@@ -110,37 +110,51 @@ class Retriever:
if
self
.
find_keys_list
[
key_idx
]
is
None
:
return
_
,
_
,
find_key_str
,
suffix_key
,
key_x0
,
key_y0
,
key_x1
,
key_y1
=
self
.
find_keys_list
[
key_idx
]
_
,
_
,
find_key_str
,
suffix_key
,
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
\
key_x3_src
,
key_y3_src
=
self
.
find_keys_list
[
key_idx
]
for
scope_key_idx
in
scope_tuple
[:
-
1
]:
if
self
.
find_keys_list
[
scope_key_idx
]
is
None
:
continue
key_scope
=
self
.
find_keys_list
[
scope_key_idx
][
6
]
# left x1
break
key_scope_tuple
=
(
self
.
find_keys_list
[
scope_key_idx
][
6
],
self
.
find_keys_list
[
scope_key_idx
][
7
])
# left x1, y1
break
else
:
key_scope
=
None
if
isinstance
(
if_startswith
,
str
):
if
isinstance
(
suffix_key
,
str
):
# TODO suffix_key校验与修正
# TODO 目前只考虑了split的情况
return
suffix_key
,
key_x0
,
key_y0
,
key_x1
,
key_y1
,
()
key_scope_tuple
=
None
# if isinstance(if_startswith, str):
# if isinstance(suffix_key, str):
# # TODO suffix_key校验与修正
# # TODO 目前只考虑了split的情况
# if isinstance(length, int):
# if -3 < length - len(suffix_key) < 3:
# return suffix_key, (
# key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src,
# key_y3_src), ()
# else:
# return suffix_key, (
# key_x0_src, key_y0_src, key_x1_src, key_y1_src, key_x2_src, key_y2_src, key_x3_src,
# key_y3_src), ()
height
=
key_y1
-
key_y0
# 坐标系转换
cos
,
sin
=
self
.
get_theta
(
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
)
key_x0
,
key_y0
,
key_x1
,
key_y1
,
key_x2
,
key_y2
,
key_x3
,
key_y3
=
self
.
rebuild_coord
(
(
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
key_x3_src
,
key_y3_src
),
cos
,
sin
)
height
=
key_y2
-
key_y0
y_min
=
key_y0
-
(
top_or_left
*
height
)
y_max
=
key_y
1
+
(
bottom_or_right
*
height
)
y_max
=
key_y
2
+
(
bottom_or_right
*
height
)
width
=
key_x
1
-
key_x0
width
=
key_x
2
-
key_x0
x_max
=
key_x0
-
(
offset
*
width
)
x_min
=
x_max
-
(
width
*
scope_tuple
[
-
1
])
if
key_scope
is
None
else
key_scope
x_min
=
x_max
-
(
width
*
scope_tuple
[
-
1
])
if
key_scope_tuple
is
None
else
\
self
.
rebuild_xy
(
*
key_scope_tuple
,
cos
,
sin
)[
0
]
all_find_value_list
=
[]
for
go_key_idx
,
((
x0
,
y0
,
_
,
_
,
x1
,
y1
,
_
,
_
),
text
)
in
go_res
.
items
():
cent_x
=
x0
+
((
x1
-
x0
)
/
2
)
cent_y
=
y0
+
((
y1
-
y0
)
/
2
)
for
go_key_idx
,
((
x0
,
y0
,
x1
,
y1
,
x2
,
y3
,
x3
,
y3
),
text
)
in
go_res
.
items
():
cent_x
,
cent_y
=
self
.
rebuild_xy
(
x0
+
((
x2
-
x0
)
/
2
),
y0
+
((
y2
-
y0
)
/
2
),
cos
,
sin
)
# if go_key_idx == '98' and key_idx == 34:
# print(key_scope)
# print('-------------')
# print(cent_x)
# print(cent_y)
# print('-----------')
...
...
@@ -153,15 +167,15 @@ class Retriever:
# print(x_max)
# print(y_min)
# print(y_max)
# print('===============')
if
x_min
<
cent_x
<
x_max
and
y_min
<
cent_y
<
y_max
:
all_find_value_list
.
append
((
text
,
x0
,
y0
,
x1
,
y1
,
(
go_key_idx
,
)))
all_find_value_list
.
append
((
text
,
x0
,
y0
,
x1
,
y1
,
x2
,
y2
,
x3
,
y3
,
(
go_key_idx
,
)))
if
len
(
all_find_value_list
)
==
0
:
return
elif
len
(
all_find_value_list
)
==
1
:
return
all_find_value_list
[
0
]
else
:
# TODO choice时的坐标转换?
choice_value
=
getattr
(
self
,
'choice_{0}'
.
format
(
choice_method
))(
all_find_value_list
,
length
)
return
choice_value
...
...
@@ -176,7 +190,8 @@ class Retriever:
if
self
.
find_keys_list
[
key_idx
]
is
None
:
return
_
,
_
,
find_key_str
,
suffix_key
,
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
key_x3_src
,
key_y3_src
=
self
.
find_keys_list
[
key_idx
]
_
,
_
,
find_key_str
,
suffix_key
,
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
\
key_x3_src
,
key_y3_src
=
self
.
find_keys_list
[
key_idx
]
for
scope_key_idx
in
scope_tuple
[:
-
1
]:
if
self
.
find_keys_list
[
scope_key_idx
]
is
None
:
...
...
@@ -197,8 +212,9 @@ class Retriever:
return
suffix_key
,
(
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
key_x3_src
,
key_y3_src
),
()
# 坐标系转换
cos
,
sin
=
self
.
get_theta
(
x0
,
y0
,
x1
,
y1
)
key_x0
,
key_y0
,
key_x1
,
key_y1
,
key_x2
,
key_y2
,
key_x3
,
key_y3
=
self
.
rebuild_coord
((
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
key_x3_src
,
key_y3_src
),
cos
,
sin
)
cos
,
sin
=
self
.
get_theta
(
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
)
key_x0
,
key_y0
,
key_x1
,
key_y1
,
key_x2
,
key_y2
,
key_x3
,
key_y3
=
self
.
rebuild_coord
(
(
key_x0_src
,
key_y0_src
,
key_x1_src
,
key_y1_src
,
key_x2_src
,
key_y2_src
,
key_x3_src
,
key_y3_src
),
cos
,
sin
)
height
=
key_y2
-
key_y0
y_min
=
key_y0
-
(
top_or_left
*
height
)
...
...
@@ -206,7 +222,8 @@ class Retriever:
width
=
key_x2
-
key_x0
x_min
=
key_x2
+
(
offset
*
width
)
x_max
=
x_min
+
(
width
*
scope_tuple
[
-
1
])
if
key_scope_tuple
is
None
else
self
.
rebuild_xy
(
*
key_scope_tuple
,
cos
,
sin
)[
0
]
x_max
=
x_min
+
(
width
*
scope_tuple
[
-
1
])
if
key_scope_tuple
is
None
else
self
.
rebuild_xy
(
*
key_scope_tuple
,
cos
,
sin
)[
0
]
all_find_value_list
=
[]
for
go_key_idx
,
((
x0
,
y0
,
x1
,
y1
,
x2
,
y3
,
x3
,
y3
),
text
)
in
go_res
.
items
():
...
...
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