33 lines
898 B
Python
33 lines
898 B
Python
|
|
# 忽略区域
|
|||
|
|
|
|||
|
|
from .tbpu import Tbpu
|
|||
|
|
|
|||
|
|
|
|||
|
|
class IgnoreArea(Tbpu):
|
|||
|
|
def __init__(self, areaList):
|
|||
|
|
self.tbpuName = "忽略区域"
|
|||
|
|
self.areaList = areaList
|
|||
|
|
|
|||
|
|
def run(self, textBlocks):
|
|||
|
|
# 返回是否矩形框 a 包含 b
|
|||
|
|
def isInBox(a, b):
|
|||
|
|
return (
|
|||
|
|
a[0][0] <= b[0][0]
|
|||
|
|
and a[0][1] <= b[0][1]
|
|||
|
|
and a[2][0] >= b[2][0]
|
|||
|
|
and a[2][1] >= b[2][1]
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
newList = []
|
|||
|
|
for b in textBlocks:
|
|||
|
|
flag = True # True 为没有被忽略
|
|||
|
|
# 检测当前文块 b 是否在任何一个检测块 a 内
|
|||
|
|
for a in self.areaList:
|
|||
|
|
if isInBox(a, b["box"]):
|
|||
|
|
flag = False # 踩到任何一个块,GG
|
|||
|
|
break
|
|||
|
|
if flag: # 没有被忽略
|
|||
|
|
newList.append(b)
|
|||
|
|
|
|||
|
|
return newList
|