Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minor fixes #746

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ ocrs
models/*
test/testdata/bboxes
/venv
.git
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RUN apt-get remove -y g++ && \
COPY . /app

# Prepare models
RUN python -u docker_prepare.py
RUN python -u docker_prepare.py --continue-on-error

RUN rm -rf /tmp

Expand Down
65 changes: 46 additions & 19 deletions docker_prepare.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,55 @@
import asyncio

from argparse import ArgumentParser
from manga_translator.utils import ModelWrapper
from manga_translator.detection import DETECTORS
from manga_translator.ocr import OCRS
from manga_translator.inpainting import INPAINTERS


arg_parser = ArgumentParser()
arg_parser.add_argument("--models", default="")
arg_parser.add_argument("--continue-on-error", action="store_true")


cli_args = arg_parser.parse_args()


async def download(dict):
for key, value in dict.items():
if issubclass(value, ModelWrapper):
print(' -- Downloading', key)
try:
inst = value()
await inst.download()
except Exception as e:
print('Failed to download', key, value)
print(e)
""" """
for key, value in dict.items():
if issubclass(value, ModelWrapper):
print(" -- Downloading", key)
try:
inst = value()
await inst.download()
except Exception as e:
print("Failed to download", key, value)
print(e)
if not cli_args.continue_on_error:
raise


async def main():
await download(DETECTORS)
await download(OCRS)
await download({
k: v for k, v in INPAINTERS.items()
if k not in ['sd']
})

if __name__ == '__main__':
asyncio.run(main())
models: set[str] = set(filter(None, cli_args.models.split(",")))

await download(
{
k: v
for k, v in DETECTORS.items()
if (not models) or (f"detector.{k}" in models)
}
)
await download(
{k: v for k, v in OCRS.items() if (not models) or (f"ocr.{k}" in models)}
)
await download(
{
k: v
for k, v in INPAINTERS.items()
if (not models) or (f"inpaint.{k}" in models) and (k not in ["sd"])
}
)


if __name__ == "__main__":
asyncio.run(main())
6 changes: 3 additions & 3 deletions manga_translator/utils/generic.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import os
from typing import List, Callable, Tuple
from typing import List, Callable, Tuple, Optional
import numpy as np
import cv2
import functools
Expand Down Expand Up @@ -65,7 +65,7 @@ def _get_args(self):

# TODO: Add TranslationContext for type linting

def atoi(text):
def atoi(text: str) -> int | str:
return int(text) if text.isdigit() else text

def natural_sort(l: List[str]):
Expand Down Expand Up @@ -246,7 +246,7 @@ def __call__(self, val = None):
else:
return 0

def load_image(img: Image.Image):
def load_image(img: Image.Image) -> Tuple[np.ndarray, Optional[Image.Image]]:
if img.mode == 'RGBA':
# from https://stackoverflow.com/questions/9166400/convert-rgba-png-to-rgb-with-pil
img.load() # needed for split()
Expand Down
2 changes: 1 addition & 1 deletion manga_translator/utils/textblock.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def __init__(self, lines: List[Tuple[int, int, int, int]],
if self.text and len(texts) > 1:
for txt in texts[1:]:
first_cjk = '\u3000' <= self.text[-1] <= '\u9fff'
second_cjk = '\u3000' <= txt[0] <= '\u9fff'
second_cjk = txt and ('\u3000' <= txt[0] <= '\u9fff')
if first_cjk or second_cjk :
self.text += txt
else :
Expand Down
Loading