yomitoku 0.7.4__py3-none-any.whl → 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yomitoku/configs/__init__.py +7 -0
- yomitoku/configs/cfg_layout_parser_rtdtrv2_v2.py +89 -0
- yomitoku/configs/cfg_text_detector_dbnet_v2.py +49 -0
- yomitoku/configs/cfg_text_recognizer_parseq_v2.py +51 -0
- yomitoku/layout_parser.py +3 -2
- yomitoku/postprocessor/rtdetr_postprocessor.py +11 -1
- yomitoku/text_detector.py +6 -2
- yomitoku/text_recognizer.py +7 -2
- {yomitoku-0.7.4.dist-info → yomitoku-0.8.0.dist-info}/METADATA +2 -3
- {yomitoku-0.7.4.dist-info → yomitoku-0.8.0.dist-info}/RECORD +12 -9
- {yomitoku-0.7.4.dist-info → yomitoku-0.8.0.dist-info}/WHEEL +0 -0
- {yomitoku-0.7.4.dist-info → yomitoku-0.8.0.dist-info}/entry_points.txt +0 -0
yomitoku/configs/__init__.py
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
from .cfg_layout_parser_rtdtrv2 import LayoutParserRTDETRv2Config
|
2
|
+
from .cfg_layout_parser_rtdtrv2_v2 import LayoutParserRTDETRv2V2Config
|
2
3
|
from .cfg_table_structure_recognizer_rtdtrv2 import (
|
3
4
|
TableStructureRecognizerRTDETRv2Config,
|
4
5
|
)
|
5
6
|
from .cfg_text_detector_dbnet import TextDetectorDBNetConfig
|
7
|
+
from .cfg_text_detector_dbnet_v2 import TextDetectorDBNetV2Config
|
6
8
|
from .cfg_text_recognizer_parseq import TextRecognizerPARSeqConfig
|
7
9
|
from .cfg_text_recognizer_parseq_small import TextRecognizerPARSeqSmallConfig
|
10
|
+
from .cfg_text_recognizer_parseq_v2 import TextRecognizerPARSeqV2Config
|
11
|
+
|
8
12
|
|
9
13
|
__all__ = [
|
10
14
|
"TextDetectorDBNetConfig",
|
@@ -12,4 +16,7 @@ __all__ = [
|
|
12
16
|
"LayoutParserRTDETRv2Config",
|
13
17
|
"TableStructureRecognizerRTDETRv2Config",
|
14
18
|
"TextRecognizerPARSeqSmallConfig",
|
19
|
+
"LayoutParserRTDETRv2V2Config",
|
20
|
+
"TextDetectorDBNetV2Config",
|
21
|
+
"TextRecognizerPARSeqV2Config",
|
15
22
|
]
|
@@ -0,0 +1,89 @@
|
|
1
|
+
from dataclasses import dataclass, field
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
|
5
|
+
@dataclass
|
6
|
+
class Data:
|
7
|
+
img_size: List[int] = field(default_factory=lambda: [640, 640])
|
8
|
+
|
9
|
+
|
10
|
+
@dataclass
|
11
|
+
class BackBone:
|
12
|
+
depth: int = 50
|
13
|
+
variant: str = "d"
|
14
|
+
freeze_at: int = 0
|
15
|
+
return_idx: List[int] = field(default_factory=lambda: [1, 2, 3])
|
16
|
+
num_stages: int = 4
|
17
|
+
freeze_norm: bool = True
|
18
|
+
|
19
|
+
|
20
|
+
@dataclass
|
21
|
+
class Encoder:
|
22
|
+
in_channels: List[int] = field(default_factory=lambda: [512, 1024, 2048])
|
23
|
+
feat_strides: List[int] = field(default_factory=lambda: [8, 16, 32])
|
24
|
+
|
25
|
+
# intra
|
26
|
+
hidden_dim: int = 256
|
27
|
+
use_encoder_idx: List[int] = field(default_factory=lambda: [2])
|
28
|
+
num_encoder_layers: int = 1
|
29
|
+
nhead: int = 8
|
30
|
+
dim_feedforward: int = 1024
|
31
|
+
dropout: float = 0.0
|
32
|
+
enc_act: str = "gelu"
|
33
|
+
|
34
|
+
# cross
|
35
|
+
expansion: float = 1.0
|
36
|
+
depth_mult: int = 1
|
37
|
+
act: str = "silu"
|
38
|
+
|
39
|
+
|
40
|
+
@dataclass
|
41
|
+
class Decoder:
|
42
|
+
num_classes: int = 6
|
43
|
+
feat_channels: List[int] = field(default_factory=lambda: [256, 256, 256])
|
44
|
+
feat_strides: List[int] = field(default_factory=lambda: [8, 16, 32])
|
45
|
+
hidden_dim: int = 256
|
46
|
+
num_levels: int = 3
|
47
|
+
|
48
|
+
num_layers: int = 6
|
49
|
+
num_queries: int = 300
|
50
|
+
|
51
|
+
num_denoising: int = 100
|
52
|
+
label_noise_ratio: float = 0.5
|
53
|
+
box_noise_scale: float = 1.0
|
54
|
+
eval_spatial_size: List[int] = field(default_factory=lambda: [640, 640])
|
55
|
+
|
56
|
+
eval_idx: int = -1
|
57
|
+
|
58
|
+
num_points: List[int] = field(default_factory=lambda: [4, 4, 4])
|
59
|
+
cross_attn_method: str = "default"
|
60
|
+
query_select_method: str = "default"
|
61
|
+
|
62
|
+
|
63
|
+
@dataclass
|
64
|
+
class LayoutParserRTDETRv2V2Config:
|
65
|
+
hf_hub_repo: str = "KotaroKinoshita/yomitoku-layout-parser-rtdtrv2-v2"
|
66
|
+
thresh_score: float = 0.5
|
67
|
+
data: Data = field(default_factory=Data)
|
68
|
+
PResNet: BackBone = field(default_factory=BackBone)
|
69
|
+
HybridEncoder: Encoder = field(default_factory=Encoder)
|
70
|
+
RTDETRTransformerv2: Decoder = field(default_factory=Decoder)
|
71
|
+
|
72
|
+
category: List[str] = field(
|
73
|
+
default_factory=lambda: [
|
74
|
+
"tables",
|
75
|
+
"figures",
|
76
|
+
"paragraphs",
|
77
|
+
"section_headings",
|
78
|
+
"page_header",
|
79
|
+
"page_footer",
|
80
|
+
]
|
81
|
+
)
|
82
|
+
|
83
|
+
role: List[str] = field(
|
84
|
+
default_factory=lambda: [
|
85
|
+
"section_headings",
|
86
|
+
"page_header",
|
87
|
+
"page_footer",
|
88
|
+
]
|
89
|
+
)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
from dataclasses import dataclass, field
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
|
5
|
+
@dataclass
|
6
|
+
class BackBone:
|
7
|
+
name: str = "resnet50"
|
8
|
+
dilation: bool = True
|
9
|
+
|
10
|
+
|
11
|
+
@dataclass
|
12
|
+
class Decoder:
|
13
|
+
in_channels: list[int] = field(default_factory=lambda: [256, 512, 1024, 2048])
|
14
|
+
hidden_dim: int = 256
|
15
|
+
adaptive: bool = True
|
16
|
+
serial: bool = True
|
17
|
+
smooth: bool = False
|
18
|
+
k: int = 50
|
19
|
+
|
20
|
+
|
21
|
+
@dataclass
|
22
|
+
class Data:
|
23
|
+
shortest_size: int = 1280
|
24
|
+
limit_size: int = 1600
|
25
|
+
|
26
|
+
|
27
|
+
@dataclass
|
28
|
+
class PostProcess:
|
29
|
+
min_size: int = 2
|
30
|
+
thresh: float = 0.4
|
31
|
+
box_thresh: float = 0.5
|
32
|
+
max_candidates: int = 1500
|
33
|
+
unclip_ratio: float = 6.0
|
34
|
+
|
35
|
+
|
36
|
+
@dataclass
|
37
|
+
class Visualize:
|
38
|
+
color: List[int] = field(default_factory=lambda: [0, 255, 0])
|
39
|
+
heatmap: bool = False
|
40
|
+
|
41
|
+
|
42
|
+
@dataclass
|
43
|
+
class TextDetectorDBNetV2Config:
|
44
|
+
hf_hub_repo: str = "KotaroKinoshita/yomitoku-text-detector-dbnet-v2"
|
45
|
+
backbone: BackBone = field(default_factory=BackBone)
|
46
|
+
decoder: Decoder = field(default_factory=Decoder)
|
47
|
+
data: Data = field(default_factory=Data)
|
48
|
+
post_process: PostProcess = field(default_factory=PostProcess)
|
49
|
+
visualize: Visualize = field(default_factory=Visualize)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
from dataclasses import dataclass, field
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
from ..constants import ROOT_DIR
|
5
|
+
|
6
|
+
|
7
|
+
@dataclass
|
8
|
+
class Data:
|
9
|
+
num_workers: int = 4
|
10
|
+
batch_size: int = 128
|
11
|
+
img_size: List[int] = field(default_factory=lambda: [32, 800])
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class Encoder:
|
16
|
+
patch_size: List[int] = field(default_factory=lambda: [8, 8])
|
17
|
+
num_heads: int = 8
|
18
|
+
embed_dim: int = 512
|
19
|
+
mlp_ratio: int = 4
|
20
|
+
depth: int = 12
|
21
|
+
|
22
|
+
|
23
|
+
@dataclass
|
24
|
+
class Decoder:
|
25
|
+
embed_dim: int = 512
|
26
|
+
num_heads: int = 8
|
27
|
+
mlp_ratio: int = 4
|
28
|
+
depth: int = 1
|
29
|
+
|
30
|
+
|
31
|
+
@dataclass
|
32
|
+
class Visualize:
|
33
|
+
font: str = str(ROOT_DIR + "/resource/MPLUS1p-Medium.ttf")
|
34
|
+
color: List[int] = field(default_factory=lambda: [0, 0, 255]) # RGB
|
35
|
+
font_size: int = 18
|
36
|
+
|
37
|
+
|
38
|
+
@dataclass
|
39
|
+
class TextRecognizerPARSeqV2Config:
|
40
|
+
hf_hub_repo: str = "KotaroKinoshita/yomitoku-text-recognizer-parseq-middle-v2"
|
41
|
+
charset: str = str(ROOT_DIR + "/resource/charset.txt")
|
42
|
+
num_tokens: int = 7312
|
43
|
+
max_label_length: int = 100
|
44
|
+
decode_ar: int = 1
|
45
|
+
refine_iters: int = 1
|
46
|
+
|
47
|
+
data: Data = field(default_factory=Data)
|
48
|
+
encoder: Encoder = field(default_factory=Encoder)
|
49
|
+
decoder: Decoder = field(default_factory=Decoder)
|
50
|
+
|
51
|
+
visualize: Visualize = field(default_factory=Visualize)
|
yomitoku/layout_parser.py
CHANGED
@@ -12,7 +12,7 @@ from pydantic import conlist
|
|
12
12
|
from .constants import ROOT_DIR
|
13
13
|
|
14
14
|
from .base import BaseModelCatalog, BaseModule, BaseSchema
|
15
|
-
from .configs import LayoutParserRTDETRv2Config
|
15
|
+
from .configs import LayoutParserRTDETRv2Config, LayoutParserRTDETRv2V2Config
|
16
16
|
from .models import RTDETRv2
|
17
17
|
from .postprocessor import RTDETRPostProcessor
|
18
18
|
from .utils.misc import filter_by_flag, is_contained
|
@@ -35,6 +35,7 @@ class LayoutParserModelCatalog(BaseModelCatalog):
|
|
35
35
|
def __init__(self):
|
36
36
|
super().__init__()
|
37
37
|
self.register("rtdetrv2", LayoutParserRTDETRv2Config, RTDETRv2)
|
38
|
+
self.register("rtdetrv2v2", LayoutParserRTDETRv2V2Config, RTDETRv2)
|
38
39
|
|
39
40
|
|
40
41
|
def filter_contained_rectangles_within_category(category_elements):
|
@@ -91,7 +92,7 @@ class LayoutParser(BaseModule):
|
|
91
92
|
|
92
93
|
def __init__(
|
93
94
|
self,
|
94
|
-
model_name="
|
95
|
+
model_name="rtdetrv2v2",
|
95
96
|
path_cfg=None,
|
96
97
|
device="cuda",
|
97
98
|
visualize=False,
|
@@ -49,6 +49,13 @@ class RTDETRPostProcessor(nn.Module):
|
|
49
49
|
def extra_repr(self) -> str:
|
50
50
|
return f"use_focal_loss={self.use_focal_loss}, num_classes={self.num_classes}, num_top_queries={self.num_top_queries}"
|
51
51
|
|
52
|
+
def clamp(self, boxes, h, w):
|
53
|
+
boxes[:, 0] = torch.clamp(boxes[:, 0], min=torch.Tensor([0]), max=None)
|
54
|
+
boxes[:, 1] = torch.clamp(boxes[:, 1], min=torch.Tensor([0]), max=None)
|
55
|
+
boxes[:, 2] = torch.clamp(boxes[:, 2], min=torch.Tensor([0]), max=w)
|
56
|
+
boxes[:, 3] = torch.clamp(boxes[:, 3], min=torch.Tensor([0]), max=h)
|
57
|
+
return boxes
|
58
|
+
|
52
59
|
# def forward(self, outputs, orig_target_sizes):
|
53
60
|
def forward(self, outputs, orig_target_sizes: torch.Tensor, threshold):
|
54
61
|
logits, boxes = outputs["pred_logits"], outputs["pred_boxes"]
|
@@ -57,6 +64,8 @@ class RTDETRPostProcessor(nn.Module):
|
|
57
64
|
bbox_pred = torchvision.ops.box_convert(boxes, in_fmt="cxcywh", out_fmt="xyxy")
|
58
65
|
bbox_pred *= orig_target_sizes.repeat(1, 2).unsqueeze(1)
|
59
66
|
|
67
|
+
w, h = orig_target_sizes.unbind(1)
|
68
|
+
|
60
69
|
if self.use_focal_loss:
|
61
70
|
scores = F.sigmoid(logits)
|
62
71
|
scores, index = torch.topk(scores.flatten(1), self.num_top_queries, dim=-1)
|
@@ -104,9 +113,10 @@ class RTDETRPostProcessor(nn.Module):
|
|
104
113
|
sco = sco[sco > threshold]
|
105
114
|
|
106
115
|
lab = lab.cpu().numpy()
|
107
|
-
box = box.cpu().numpy()
|
108
116
|
sco = sco.cpu().numpy()
|
109
117
|
|
118
|
+
box = self.clamp(box.cpu(), h.cpu(), w.cpu()).numpy()
|
119
|
+
|
110
120
|
result = dict(labels=lab, boxes=box, scores=sco)
|
111
121
|
results.append(result)
|
112
122
|
|
yomitoku/text_detector.py
CHANGED
@@ -6,7 +6,10 @@ import os
|
|
6
6
|
from pydantic import conlist
|
7
7
|
|
8
8
|
from .base import BaseModelCatalog, BaseModule, BaseSchema
|
9
|
-
from .configs import
|
9
|
+
from .configs import (
|
10
|
+
TextDetectorDBNetConfig,
|
11
|
+
TextDetectorDBNetV2Config,
|
12
|
+
)
|
10
13
|
from .data.functions import (
|
11
14
|
array_to_tensor,
|
12
15
|
resize_shortest_edge,
|
@@ -25,6 +28,7 @@ class TextDetectorModelCatalog(BaseModelCatalog):
|
|
25
28
|
def __init__(self):
|
26
29
|
super().__init__()
|
27
30
|
self.register("dbnet", TextDetectorDBNetConfig, DBNet)
|
31
|
+
self.register("dbnetv2", TextDetectorDBNetV2Config, DBNet)
|
28
32
|
|
29
33
|
|
30
34
|
class TextDetectorSchema(BaseSchema):
|
@@ -43,7 +47,7 @@ class TextDetector(BaseModule):
|
|
43
47
|
|
44
48
|
def __init__(
|
45
49
|
self,
|
46
|
-
model_name="
|
50
|
+
model_name="dbnetv2",
|
47
51
|
path_cfg=None,
|
48
52
|
device="cuda",
|
49
53
|
visualize=False,
|
yomitoku/text_recognizer.py
CHANGED
@@ -7,7 +7,11 @@ import unicodedata
|
|
7
7
|
from pydantic import conlist
|
8
8
|
|
9
9
|
from .base import BaseModelCatalog, BaseModule, BaseSchema
|
10
|
-
from .configs import
|
10
|
+
from .configs import (
|
11
|
+
TextRecognizerPARSeqConfig,
|
12
|
+
TextRecognizerPARSeqSmallConfig,
|
13
|
+
TextRecognizerPARSeqV2Config,
|
14
|
+
)
|
11
15
|
from .data.dataset import ParseqDataset
|
12
16
|
from .models import PARSeq
|
13
17
|
from .postprocessor import ParseqTokenizer as Tokenizer
|
@@ -23,6 +27,7 @@ class TextRecognizerModelCatalog(BaseModelCatalog):
|
|
23
27
|
def __init__(self):
|
24
28
|
super().__init__()
|
25
29
|
self.register("parseq", TextRecognizerPARSeqConfig, PARSeq)
|
30
|
+
self.register("parseqv2", TextRecognizerPARSeqV2Config, PARSeq)
|
26
31
|
self.register("parseq-small", TextRecognizerPARSeqSmallConfig, PARSeq)
|
27
32
|
|
28
33
|
|
@@ -44,7 +49,7 @@ class TextRecognizer(BaseModule):
|
|
44
49
|
|
45
50
|
def __init__(
|
46
51
|
self,
|
47
|
-
model_name="
|
52
|
+
model_name="parseqv2",
|
48
53
|
path_cfg=None,
|
49
54
|
device="cuda",
|
50
55
|
visualize=False,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: yomitoku
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.8.0
|
4
4
|
Summary: Yomitoku is an AI-powered document image analysis package designed specifically for the Japanese language.
|
5
5
|
Author-email: Kotaro Kinoshita <kotaro.kinoshita@mlism.com>
|
6
6
|
License: CC BY-NC-SA 4.0
|
@@ -37,7 +37,7 @@ Description-Content-Type: text/markdown
|
|
37
37
|
YomiToku は日本語に特化した AI 文章画像解析エンジン(Document AI)です。画像内の文字の全文 OCR およびレイアウト解析機能を有しており、画像内の文字情報や図表を認識、抽出、変換します。
|
38
38
|
|
39
39
|
- 🤖 日本語データセットで学習した 4 種類(文字位置の検知、文字列認識、レイアウト解析、表の構造認識)の AI モデルを搭載しています。4 種類のモデルはすべて独自に学習されたモデルで日本語文書に対して、高精度に推論可能です。
|
40
|
-
- 🇯🇵 各モデルは日本語の文書画像に特化して学習されており、7000
|
40
|
+
- 🇯🇵 各モデルは日本語の文書画像に特化して学習されており、7000 文字を超える日本語文字の認識をサーポート、手書き文字、縦書きなど日本語特有のレイアウト構造の文書画像の解析も可能です。(日本語以外にも英語の文書に対しても対応しています)。
|
41
41
|
- 📈 レイアウト解析、表の構造解析, 読み順推定機能により、文書画像のレイアウトの意味的構造を壊さずに情報を抽出することが可能です。
|
42
42
|
- 📄 多様な出力形式をサポートしています。html やマークダウン、json、csv のいずれかのフォーマットに変換可能です。また、文書内に含まれる図表、画像の抽出の出力も可能です。
|
43
43
|
- ⚡ GPU 環境で高速に動作し、効率的に文書の文字起こし解析が可能です。また、VRAM も 8GB 以内で動作し、ハイエンドな GPU を用意する必要はありません。
|
@@ -103,7 +103,6 @@ yomitoku --help
|
|
103
103
|
**NOTE**
|
104
104
|
|
105
105
|
- GPU での実行を推奨します。CPU を用いての推論向けに最適化されておらず、処理時間が長くなります。
|
106
|
-
- 活字のみ識別をサポートしております。手書き文字に関しては、読み取れる場合もありますが、公式にはサポートしておりません。
|
107
106
|
- Yomitoku は文書 OCR 向けに最適化されており、情景 OCR(看板など紙以外にプリントされた文字の読み取り)向けには最適化されていません。
|
108
107
|
- AI-OCR の識別精度を高めるために、入力画像の解像度が重要です。低解像度画像では識別精度が低下します。最低でも画像の短辺を 720px 以上の画像で推論することをお勧めします。
|
109
108
|
|
@@ -3,20 +3,23 @@ yomitoku/base.py,sha256=9U3sfe69O6vuO430JzzKQQNkgPsLM9WdLfOUUhp3Ljs,3878
|
|
3
3
|
yomitoku/constants.py,sha256=zlW5QRc_u_F3C2RAgBFWyHJZexBnJT5N15GC-9d3iLo,686
|
4
4
|
yomitoku/document_analyzer.py,sha256=wQMmXACDsDmyaxg2OnG9Og5Nx53WPUkQdUmgYtljACQ,16412
|
5
5
|
yomitoku/layout_analyzer.py,sha256=VhNf1ZQFoozj6WUGk5ll1p2p1jk5X3j-JPcDbTAoSl4,1856
|
6
|
-
yomitoku/layout_parser.py,sha256=
|
6
|
+
yomitoku/layout_parser.py,sha256=0MgbCsD90srQdsxkGEL0TgKm4rkmGzsQYx0sjKQ03yc,7718
|
7
7
|
yomitoku/ocr.py,sha256=JSTjkupcxHITQm6ERnzU7As0c3KWf8-oxc0AqNoWHXo,2272
|
8
8
|
yomitoku/reading_order.py,sha256=OfhOS9ttPDoPSuHrIRKyOzG19GGeRufbuSKDqhsohh4,6404
|
9
9
|
yomitoku/table_structure_recognizer.py,sha256=tHjex6deT_FjRK5ePz9bUXA_QIhgv_vYtK-ynm4ALxg,9625
|
10
|
-
yomitoku/text_detector.py,sha256=
|
11
|
-
yomitoku/text_recognizer.py,sha256=
|
10
|
+
yomitoku/text_detector.py,sha256=6IwEJJKp_F8YH0Oki0QV-Mqi--P2LGbNKo-_kxBB_eo,4383
|
11
|
+
yomitoku/text_recognizer.py,sha256=eaxozNu-Ms6iv8efbKZzn8pJNW1Wo4f86bGhzSMtv3s,5992
|
12
12
|
yomitoku/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
yomitoku/cli/main.py,sha256=jQCSwHw4oOwLQjARvaIO1yoSjz-2Rdb9c3DNShLS5OE,12038
|
14
|
-
yomitoku/configs/__init__.py,sha256=
|
14
|
+
yomitoku/configs/__init__.py,sha256=x5-ccjGiP6xxRtDPT7f1Enl7SsE0hSk0G8f7eF9V85I,886
|
15
15
|
yomitoku/configs/cfg_layout_parser_rtdtrv2.py,sha256=8PRxB2Ar9UF7-DLtbgSokhrzdXb0veWI6Wc-X8qigRw,2329
|
16
|
+
yomitoku/configs/cfg_layout_parser_rtdtrv2_v2.py,sha256=nMrL3uvoVmyzZ909Bz2zmfp9b6AEBLKhIprOvQ5yiQE,2324
|
16
17
|
yomitoku/configs/cfg_table_structure_recognizer_rtdtrv2.py,sha256=o70GMHD8k-zeBeJtuhPS8x7vVB-ffucnJXeSyn-0AXo,2116
|
17
18
|
yomitoku/configs/cfg_text_detector_dbnet.py,sha256=U9k48PON7haoOaytiELhbZRpv9RMiUm6nnfHmdxIa9Q,1153
|
19
|
+
yomitoku/configs/cfg_text_detector_dbnet_v2.py,sha256=PzdV6-f75ba-KBEBcPxyo9STWQ6m5-1Rl3MFBLl2TSc,1148
|
18
20
|
yomitoku/configs/cfg_text_recognizer_parseq.py,sha256=hpFs3nKqh4XdU3BZMTultegtLEGahEsCaZdjfKC_MO8,1247
|
19
21
|
yomitoku/configs/cfg_text_recognizer_parseq_small.py,sha256=uCm_VC_G79IbZpOiK8fgYzAJ4b98H5pf328wyQomtfo,1259
|
22
|
+
yomitoku/configs/cfg_text_recognizer_parseq_v2.py,sha256=GfHzbByOKjH21PRTxT8x_fU4r4Mda6F750Z8pjNeb8g,1249
|
20
23
|
yomitoku/data/__init__.py,sha256=KAofFc9rk9ZdTKBjemu9RM8Vj9XnKbWC2MPZ2RWtOdE,82
|
21
24
|
yomitoku/data/dataset.py,sha256=-I4f-FDtgsPnJ2MnXB7FtwihMW3koDaSI1OEoqKneIg,1014
|
22
25
|
yomitoku/data/functions.py,sha256=HIrffs0zCJOq8IvQiI_z-b4MwTb-H2wmZjEE_5VpxFs,8040
|
@@ -40,7 +43,7 @@ yomitoku/onnx/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
43
|
yomitoku/postprocessor/__init__.py,sha256=W4vUuqBaFtH5dlSBIYgyaCroGLMjpV6RrNGIBQ8NFVw,243
|
41
44
|
yomitoku/postprocessor/dbnet_postporcessor.py,sha256=o_y8b5REd2dFEdIpRcr6o-XBfOCHo9rBYGwokP_uhTc,4948
|
42
45
|
yomitoku/postprocessor/parseq_tokenizer.py,sha256=e89_g_bc4Au3SchuxoJfJNATJTxFmVYetzXyAzPWm28,4315
|
43
|
-
yomitoku/postprocessor/rtdetr_postprocessor.py,sha256=
|
46
|
+
yomitoku/postprocessor/rtdetr_postprocessor.py,sha256=zp_PEAIl0-b7EJIWVZFrAaEUBSp9OgBVd1G-mP9R20E,4350
|
44
47
|
yomitoku/resource/MPLUS1p-Medium.ttf,sha256=KLL1KkCumIBkgQtx1n4SffdaFuCNffThktEAbkB1OU8,1758908
|
45
48
|
yomitoku/resource/charset.txt,sha256=sU91kSi-9Wk4733bCXy4j_UDmvcsj96sHOq1ppUJlOY,21672
|
46
49
|
yomitoku/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -48,7 +51,7 @@ yomitoku/utils/graph.py,sha256=LKNB8ZhSQwOZMfeAimPMF5UCVVr2ZaUWoGDkz8z-uGU,456
|
|
48
51
|
yomitoku/utils/logger.py,sha256=uOmtQDr0A0JD7wyFshedL08BiNrQorHnpktRXba8bjU,424
|
49
52
|
yomitoku/utils/misc.py,sha256=FbwPLeIYYBvNf9wQh2RoEonTM5BF7_IwaEqmRsYHKA8,2673
|
50
53
|
yomitoku/utils/visualizer.py,sha256=DjDwHiAu1iFRKh96H3Egq4vuI2s_-9dLCDeykhKi8jo,5251
|
51
|
-
yomitoku-0.
|
52
|
-
yomitoku-0.
|
53
|
-
yomitoku-0.
|
54
|
-
yomitoku-0.
|
54
|
+
yomitoku-0.8.0.dist-info/METADATA,sha256=CH5KOT64Q8AMOaKkUbbd9rI1Zcd_dBk_OXd2GguC4f0,8555
|
55
|
+
yomitoku-0.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
56
|
+
yomitoku-0.8.0.dist-info/entry_points.txt,sha256=nFV3S11zgBNW0Qq_D0XQNg2R4lNXU_9XUFr6rdJoyF8,52
|
57
|
+
yomitoku-0.8.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|