- 新增 app/core/cache_paths.py:HF_HOME / tiktoken 缓存统一指向 <repo>/.cache, 本地与 Docker 路径一致,离线部署打包 .cache 即可 - Dockerfile.backend 的 tiktoken 词表改用官方 SHA 文件名,避免运行时回退重建 - 修复 layout_hybrid 路径不运行 detect_pdf_document_noise 的缺陷: needs_pdf_noise 不再与 needs_layout_raw 互斥,PDF 智能预处理在版面切分下也生效 - 新增 layout_noise.py:识别跨页重复的页眉表格标签组并按行剔除, 解决 docling layout 模型把中文企业 PDF 页眉识别成普通 Table 导致清不掉的问题 - 回收 HybridChunker 丢弃的末尾孤立标题,找回章节标题内容
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
"""集中管理项目本地缓存目录(HuggingFace / tiktoken)。
|
||
|
||
所有 Python 库通过环境变量引用 ``<repo_root>/.cache/{huggingface,tiktoken}``,
|
||
避免写入用户家目录,也避免不同部署路径(本地 / Docker)下缓存位置不一致。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
import os
|
||
from pathlib import Path
|
||
|
||
|
||
def repo_root() -> Path:
|
||
# backend/app/core/cache_paths.py -> backend -> 仓库根目录
|
||
return Path(__file__).resolve().parents[3]
|
||
|
||
|
||
def cache_root() -> Path:
|
||
return repo_root() / ".cache"
|
||
|
||
|
||
def huggingface_cache_dir() -> Path:
|
||
return cache_root() / "huggingface"
|
||
|
||
|
||
def tiktoken_cache_dir() -> Path:
|
||
return cache_root() / "tiktoken"
|
||
|
||
|
||
def setup_local_caches() -> None:
|
||
"""进程启动时统一设置 HF / tiktoken 缓存环境变量,并确保目录存在。
|
||
|
||
必须在 import ``docling`` / ``tiktoken`` 等依赖之前调用,否则首次使用会
|
||
仍然走到默认 ``~/.cache`` 路径。
|
||
"""
|
||
|
||
hf_dir = huggingface_cache_dir()
|
||
tiktoken_dir = tiktoken_cache_dir()
|
||
hf_dir.mkdir(parents=True, exist_ok=True)
|
||
(hf_dir / "hub").mkdir(parents=True, exist_ok=True)
|
||
tiktoken_dir.mkdir(parents=True, exist_ok=True)
|
||
|
||
os.environ["HF_HOME"] = str(hf_dir)
|
||
os.environ["HUGGINGFACE_HUB_CACHE"] = str(hf_dir / "hub")
|
||
os.environ["HF_HUB_CACHE"] = str(hf_dir / "hub")
|
||
os.environ["TIKTOKEN_CACHE_DIR"] = str(tiktoken_dir)
|