"""
跟着做:10 分钟切完你的第一份文档(完整可运行)
------------------------------------------------
环境:Python3.12独立venv；这是已实测的旧版切分练习组合，不是完整依赖锁文件。
依赖:python -m pip install langchain==0.1.20 langchain-community==0.0.38 langchain-text-splitters==0.0.2 pypdf==4.3.1
用法:把 your_doc.pdf 换成你任意一份 PDF,然后 python chunk_demo.py
"""
from langchain_community.document_loaders import PyPDFLoader   # 旧版本是 from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 1. 读 PDF
loader = PyPDFLoader("your_doc.pdf")
docs = loader.load()
text = "\n".join(d.page_content for d in docs)
print(f"原文档总长度:{len(text)} 字")

# 2. 切分
splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,        # 每个 chunk 大约 512 字
    chunk_overlap=50,      # 目标重叠50字符，实际受分隔边界影响
    separators=["\n\n", "\n", "。", "！", "？", "；", " ", ""],
)
chunks = splitter.split_text(text)

# 3. 展示实际得到的前两个块；短/空文档也不会索引越界
print(f"切完共 {len(chunks)} 个 chunk\n")
if not chunks:
    print("未提取到有效文本；检查PDF是否为扫描件，需要时先OCR。")
for i, piece in enumerate(chunks[:2], 1):
    print(f"\n第{i}个 chunk:")
    print(piece)

# 4. 动手实验:把 chunk_size 改成 1024 / 128 再跑,观察 chunk 数量和长度怎么变。
