Skip to content

Commit 7278895

Browse files
authored
feat: support revision (#75)
1 parent 2955d2f commit 7278895

5 files changed

Lines changed: 28 additions & 6 deletions

File tree

doc_page_extractor/extractor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ class _PageExtractorImpls:
3636
def __init__(self, model: DeepSeekOCRModel) -> None:
3737
self._model: DeepSeekOCRModel = model
3838

39-
def download_models(self) -> None:
40-
self._model.download()
39+
def download_models(self, revision: str | None = None) -> None:
40+
self._model.download(revision)
4141

4242
def load_models(self) -> None:
4343
self._model.load()

doc_page_extractor/model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ def __init__(
8080
if next_model_index == 0:
8181
raise ValueError("No devices are enabled for model loading.")
8282

83-
def download(self) -> None:
83+
def download(self, revision: str | None) -> None:
8484
with self._rwlock.gen_wlock():
8585
snapshot_download(
8686
repo_id=self._model_name,
8787
repo_type="model",
88+
revision=revision,
89+
force_download=True,
8890
cache_dir=self._cache_dir(),
8991
)
9092
if self._model_path is not None and self._find_pretrained_path() is None:

doc_page_extractor/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ExtractionContext:
2828

2929
@runtime_checkable
3030
class PageExtractor(Protocol):
31-
def download_models(self) -> None:
31+
def download_models(self, revision: str | None = None) -> None:
3232
...
3333

3434
def load_models(self) -> None:
@@ -47,7 +47,7 @@ def extract(
4747

4848
@runtime_checkable
4949
class DeepSeekOCRModel(Protocol):
50-
def download(self) -> None:
50+
def download(self, revision: str | None) -> None:
5151
...
5252

5353
def load(self) -> None:

download.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import time
2+
from pathlib import Path
3+
4+
from doc_page_extractor import create_page_extractor
5+
6+
7+
_REVISION = "9f30c71f441d010e5429c532364a86705536c53a"
8+
9+
def main() -> None:
10+
project_root = Path(__file__).parent
11+
extractor = create_page_extractor(
12+
model_path=project_root / "models-cache",
13+
local_only=False,
14+
)
15+
begin_at = time.time()
16+
extractor.download_models(_REVISION)
17+
print(f"Models downloaded cost {time.time() - begin_at:.2f} seconds.")
18+
19+
if __name__ == "__main__":
20+
main()

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[project]
66
name = "doc-page-extractor"
7-
version = "1.0.7"
7+
version = "1.0.8"
88
description = "Document page extraction tool powered by DeepSeek-OCR"
99
authors = [
1010
{name = "Tao Zeyu", email = "i@taozeyu.com"}

0 commit comments

Comments
 (0)