Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_41840029
PaddleOCR
提交
960a0ca6
P
PaddleOCR
项目概览
weixin_41840029
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
960a0ca6
编写于
9月 04, 2022
作者:
张欣-男
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加draw_ocr_box_txt2:解决文本框倾斜时文字画在外边的情况
上级
1323983c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
73 addition
and
2 deletion
+73
-2
tools/infer/predict_system.py
tools/infer/predict_system.py
+2
-2
tools/infer/utility.py
tools/infer/utility.py
+71
-0
未找到文件。
tools/infer/predict_system.py
浏览文件 @
960a0ca6
...
...
@@ -34,7 +34,7 @@ import tools.infer.predict_det as predict_det
import
tools.infer.predict_cls
as
predict_cls
from
ppocr.utils.utility
import
get_image_file_list
,
check_and_read
from
ppocr.utils.logging
import
get_logger
from
tools.infer.utility
import
draw_ocr_box_txt
,
get_rotate_crop_image
from
tools.infer.utility
import
draw_ocr_box_txt
2
,
get_rotate_crop_image
logger
=
get_logger
()
...
...
@@ -189,7 +189,7 @@ def main(args):
txts
=
[
rec_res
[
i
][
0
]
for
i
in
range
(
len
(
rec_res
))]
scores
=
[
rec_res
[
i
][
1
]
for
i
in
range
(
len
(
rec_res
))]
draw_img
=
draw_ocr_box_txt
(
draw_img
=
draw_ocr_box_txt
2
(
image
,
boxes
,
txts
,
...
...
tools/infer/utility.py
浏览文件 @
960a0ca6
...
...
@@ -447,6 +447,77 @@ def draw_ocr_box_txt(image,
return
np
.
array
(
img_show
)
def
draw_ocr_box_txt2
(
image
,
boxes
,
txts
=
None
,
scores
=
None
,
drop_score
=
0.5
,
font_path
=
"./doc/fonts/simfang.ttf"
):
h
,
w
=
image
.
height
,
image
.
width
img_left
=
image
.
copy
()
img_right
=
np
.
ones
((
h
,
w
,
3
),
dtype
=
np
.
uint8
)
*
255
import
random
random
.
seed
(
0
)
draw_left
=
ImageDraw
.
Draw
(
img_left
)
if
txts
is
None
or
len
(
txts
)
!=
len
(
boxes
):
txts
=
[
None
]
*
len
(
boxes
)
for
idx
,
(
box
,
txt
)
in
enumerate
(
zip
(
boxes
,
txts
)):
if
scores
is
not
None
and
scores
[
idx
]
<
drop_score
:
continue
color
=
(
random
.
randint
(
0
,
255
),
random
.
randint
(
0
,
255
),
random
.
randint
(
0
,
255
))
draw_left
.
polygon
(
box
,
fill
=
color
)
img_right_text
=
draw_box_txt_fine
((
w
,
h
),
box
,
txt
,
font_path
)
pts
=
np
.
array
(
box
,
np
.
int32
).
reshape
((
-
1
,
1
,
2
))
cv2
.
polylines
(
img_right_text
,
[
pts
],
True
,
color
,
1
)
img_right
=
cv2
.
bitwise_and
(
img_right
,
img_right_text
)
img_left
=
Image
.
blend
(
image
,
img_left
,
0.5
)
img_show
=
Image
.
new
(
'RGB'
,
(
w
*
2
,
h
),
(
255
,
255
,
255
))
img_show
.
paste
(
img_left
,
(
0
,
0
,
w
,
h
))
img_show
.
paste
(
Image
.
fromarray
(
img_right
),
(
w
,
0
,
w
*
2
,
h
))
return
np
.
array
(
img_show
)
def
draw_box_txt_fine
(
img_size
,
box
,
txt
,
font_path
=
"./doc/fonts/simfang.ttf"
):
box_height
=
int
(
math
.
sqrt
((
box
[
0
][
0
]
-
box
[
3
][
0
])
**
2
+
(
box
[
0
][
1
]
-
box
[
3
][
1
])
**
2
))
box_width
=
int
(
math
.
sqrt
((
box
[
0
][
0
]
-
box
[
1
][
0
])
**
2
+
(
box
[
0
][
1
]
-
box
[
1
][
1
])
**
2
))
if
box_height
>
2
*
box_width
and
box_height
>
30
:
img_text
=
Image
.
new
(
'RGB'
,
(
box_height
,
box_width
),
(
255
,
255
,
255
))
draw_text
=
ImageDraw
.
Draw
(
img_text
)
if
txt
:
font
=
create_font
(
txt
,
(
box_height
,
box_width
),
font_path
)
draw_text
.
text
([
0
,
0
],
txt
,
fill
=
(
0
,
0
,
0
),
font
=
font
)
img_text
=
img_text
.
transpose
(
Image
.
ROTATE_270
)
else
:
img_text
=
Image
.
new
(
'RGB'
,
(
box_width
,
box_height
),
(
255
,
255
,
255
))
draw_text
=
ImageDraw
.
Draw
(
img_text
)
if
txt
:
font
=
create_font
(
txt
,
(
box_width
,
box_height
),
font_path
)
draw_text
.
text
([
0
,
0
],
txt
,
fill
=
(
0
,
0
,
0
),
font
=
font
)
pts1
=
np
.
float32
([[
0
,
0
],
[
box_width
,
0
],
[
box_width
,
box_height
],
[
0
,
box_height
]])
pts2
=
np
.
array
(
box
,
dtype
=
np
.
float32
)
M
=
cv2
.
getPerspectiveTransform
(
pts1
,
pts2
)
img_text
=
np
.
array
(
img_text
,
dtype
=
np
.
uint8
)
img_right_text
=
cv2
.
warpPerspective
(
img_text
,
M
,
img_size
,
flags
=
cv2
.
INTER_NEAREST
,
borderMode
=
cv2
.
BORDER_CONSTANT
,
borderValue
=
(
255
,
255
,
255
))
return
img_right_text
def
create_font
(
txt
,
sz
,
font_path
=
"./doc/fonts/simfang.ttf"
):
font_size
=
int
(
sz
[
1
]
*
0.99
)
font
=
ImageFont
.
truetype
(
font_path
,
font_size
,
encoding
=
"utf-8"
)
length
=
font
.
getsize
(
txt
)[
0
]
if
length
>
sz
[
0
]:
font_size
=
int
(
font_size
*
sz
[
0
]
/
length
)
font
=
ImageFont
.
truetype
(
font_path
,
font_size
,
encoding
=
"utf-8"
)
return
font
def
str_count
(
s
):
"""
Count the number of Chinese characters,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录