基于AI技术的档案软件智能分类实操步骤指南
前置准备
1. 环境要求:Python 3.9+,直接下载地址(Windows):https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe,安装时勾选「Add Python to PATH」;Linux/macOS执行命令:sudo apt install python3.9 python3-pip(Debian/Ubuntu)/ brew install python@3.9(macOS)。
2. 安装依赖库:打开终端/CMD执行完整命令: ``` pip install langchain==0.0.345 sentence-transformers==2.2.2 fastapi==0.104.1 uvicorn==0.24.0.post1 python-multipart==0.0.6 requests==2.31.0 ```
3. 准备工作目录:执行命令创建档案存储文件夹:Windows输入「md archives」;Linux/macOS输入「mkdir archives」,将待分类的TXT档案放入该目录(示例:人事招聘.txt、财务报销.txt等)。
第一步:实现本地AI档案自动分类
新建文件「ai_archive_classifier.py」,粘贴以下完整代码,无需修改核心逻辑,仅需调整分类规则: ``` from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import FAISS from langchain.text_splitter import CharacterTextSplitter import os 核心配置(仅修改此处即可适配你的分类需求) ARCHIVE_DIR = "./archives" 待分类档案目录,不要改动 EMBEDDING_MODEL = "BAAI/bge-small-en-v1.5" 开源语义模型,无需下载本地 CUSTOM_CATEGORIES = ["人事档案", "财务档案", "项目档案", "行政档案"] 自定义分类,可增减 加载语义模型 embeddings = HuggingFaceEmbeddings(model_name=EMBEDDING_MODEL) 读取所有待分类档案文本 def load_all_archives(): documents = [] for filename in os.listdir(ARCHIVE_DIR): if filename.endswith(".txt"): file_path = os.path.join(ARCHIVE_DIR, filename) with open(file_path, "r", encoding="utf-8") as f: documents.append({"text": f.read(), "filename": filename}) return documents 生成分类向量库(匹配分类和语义) def build_category_vector(): category_text = "\n".join(CUSTOM_CATEGORIES) text_splitter = CharacterTextSplitter(chunk_size=50, chunk_overlap=0) category_chunks = text_splitter.split_text(category_text) vector_store = FAISS.from_texts(category_chunks, embeddings) return vector_store 单篇档案分类逻辑 def classify_single_archive(text, category_vector): 相似度匹配,返回最高匹配结果 results = category_vector.similarity_search_with_score(text, k=1) 相似度阈值(低于0.5视为无法匹配,归为其他) if results[0][1] < 0.5: return "其他档案" return CUSTOM_CATEGORIES[results[0][0].metadata["index"]] 主执行流程 if __name__ == "__main__": 1. 初始化分类向量库 cat_vector = build_category_vector() 2. 加载待分类档案 archives = load_all_archives() 3. 分类并归档到对应目录 for arc in archives: category = classify_single_archive(arc["text"], cat_vector) 创建分类目录(不存在则自动创建) os.makedirs(os.path.join(ARCHIVE_DIR, category), exist_ok=True) 移动档案到分类目录 old_path = os.path.join(ARCHIVE_DIR, arc["filename"]) new_path = os.path.join(ARCHIVE_DIR, category, arc["filename"]) os.rename(old_path, new_path) print(f"✅ 已归档:{arc['filename']} → 分类:{category}") ```

执行分类:打开终端/CMD进入代码所在目录,执行命令「python ai_archive_classifier.py」,将自动把archives目录下的TXT档案分类到对应子文件夹。
第二步:封装成Web服务(适配档案软件集成)
如果需要把AI分类功能嵌入到现有档案软件,可启动轻量Web服务,新建文件「app.py」,粘贴完整代码: ``` from fastapi import FastAPI, UploadFile, File import shutil import os from ai_archive_classifier import classify_single_archive, build_category_vector 初始化服务 app = FastAPI(title="AI档案分类接口") category_vector = build_category_vector() 定义分类接口 @app.post("/api/archive/classify") async def classify_api(file: UploadFile = File(...)): 临时保存上传的文件 temp_file = f"./temp_{file.filename}" with open(temp_file, "wb") as f: shutil.copyfileobj(file.file, f) 读取文本并分类 with open(temp_file, "r", encoding="utf-8") as f: text = f.read() os.remove(temp_file) 自动清理临时文件 category = classify_single_archive(text, category_vector) return {"filename": file.filename, "category": category} 启动服务 if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) ```
启动服务:执行命令「python app.py」,服务启动后,可通过浏览器访问「http://127.0.0.1:8000/docs」,直接在可视化界面上传TXT档案测试分类结果;若要集成到档案软件,只需调用接口地址(公网部署则换为对应IP:端口)。
第三步:档案软件集成接口示例
在档案软件的导入文件模块,添加以下Python代码(可直接对接): ``` import requests def call_ai_classifier(file_full_path): 本地服务地址,若部署到服务器则修改为公网地址 api_url = "http://127.0.0.1:8000/api/archive/classify" 上传文件并获取分类 with open(file_full_path, "rb") as f: files = {"file": (os.path.basename(file_full_path), f)} response = requests.post(api_url, files=files) 返回分类结果,软件可直接使用 return response.json()["category"] 测试示例 if __name__ == "__main__": test_path = "./archives/项目立项申请.txt" result = call_ai_classifier(test_path) print(f"本次测试分类结果:{result}") ```
常见问题及解决
- 模块缺失报错:执行「pip install --force-reinstall 库名==版本号」补全,例如「pip install --force-reinstall langchain==0.0.345」
- 分类不准确:修改代码中「CUSTOM_CATEGORIES」列表,替换成和档案内容完全匹配的分类名称;或升级模型为更大的「BAAI/bge-large-en-v1.5」(修改EMBEDDING_MODEL字段)
- 内存不足报错:修改嵌入模型加载代码,添加CPU适配: ``` embeddings = HuggingFaceEmbeddings(model_name=EMBEDDING_MODEL, model_kwargs={"device": "cpu"}) ```