feat(data_process): 模型缓存统一仓库根 .cache 并修复 PDF 页眉页脚清理
- 新增 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 丢弃的末尾孤立标题,找回章节标题内容
This commit is contained in:
46
backend/app/core/cache_paths.py
Normal file
46
backend/app/core/cache_paths.py
Normal file
@@ -0,0 +1,46 @@
|
||||
"""集中管理项目本地缓存目录(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)
|
||||
Reference in New Issue
Block a user