支持批量著录的档案管理软件:实操指南与配置详解
一、批量著录的核心价值与软件选择
批量著录功能通过自动化处理代替手工逐条录入,将档案著录效率提升5-10倍。选择软件时需重点考察以下技术指标:支持的文件格式(PDF、JPG、TIFF、Office文档等)、元数据字段自定义能力、批量导入模板的灵活性(Excel、XML)、去重与校验机制。
本文以开源的Archivematica和具备友好图形界面的AtoM(Access to Memory)为例进行讲解。两者均支持批量著录,适用于不同技术背景的团队。
二、环境准备与软件安装
1. 基础运行环境部署
在Ubuntu 20.04 LTS系统上执行以下命令安装依赖:
```bash sudo apt update sudo apt install -y python3-pip git curl wget unzip sudo apt install -y mysql-server libmysqlclient-dev ```
安装完成后,启动MySQL并设置root密码:
```bash sudo systemctl start mysql sudo mysql_secure_installation ```
根据提示设置密码策略并移除匿名用户。
2. Archivematica安装与配置
Archivematica采用微服务架构,推荐使用Docker Compose部署。创建项目目录并下载配置文件:
```bash mkdir archivematica-batch cd archivematica-batch curl -O https://raw.githubusercontent.com/artefactual/archivematica/stable/1.14.x/docker/archivematica/docker-compose.yml ```
编辑docker-compose.yml文件,在`storage-service`部分添加以下环境变量以启用批量API:
```yaml environment: - BATCH_API_ENABLED=true - BATCH_API_KEY=your_secure_api_key_here ```
启动所有服务:
```bash docker-compose up -d ```
等待5-10分钟,访问 http://localhost:8000 进入管理界面,使用默认凭据(admin/admin)登录。
3. AtoM安装与配置
AtoM基于PHP和Elasticsearch。使用以下脚本快速安装:
```bash wget https://raw.githubusercontent.com/artefactual/atom/stable/2.x/install/install.sh chmod +x install.sh sudo ./install.sh ```
安装过程中,按提示设置数据库密码和站点信息。安装完成后,执行以下命令初始化Elasticsearch索引:
```bash cd /usr/share/nginx/atom sudo php symfony tools:purge --demo=no sudo php symfony search:populate ```
访问 http://your-server-ip 进入AtoM界面。
三、批量著录全流程实操
1. 元数据模板设计与准备
创建标准的CSV模板,包含必填字段。以下是描述类档案的模板示例:
```csv identifier,title,creator,date,description,subject,language,rights DOC-2024-001,2023年度财务报告,财务部,2023-12-31,包含全年收支明细,财务、审计,中文,内部公开 DOC-2024-002,项目立项书,项目部,2024-01-15,XX项目正式立项文件,项目管理,中文,仅限管理层 ```
将模板保存为metadata_batch.csv,确保编码为UTF-8无BOM格式。
2. Archivematica批量导入
在Archivematica的“Transfer”页面,点击“Create transfer”。选择“Upload DIP”方式,上传ZIP格式的档案文件包(需提前将文档与CSV模板打包)。在元数据设置中,选择“Load metadata from CSV”,并指定CSV文件路径。
关键配置步骤:
- 在“Processing configuration”中,启用“Assign UUIDs to directories”选项
- 在“Normalization”阶段,设置“Document conversion format”为PDF/A
- 在“Store AIP”阶段,选择本地存储路径(如`/var/archivematica/sharedDirectory/`)
启动处理后,可在“Preservation planning”中监控批量著录进度。
3. AtoM批量导入与校验

登录AtoM管理后台,进入“导入/导出”菜单。选择“CSV导入”,上传准备好的metadata_batch.csv文件。
在映射界面,按以下规则匹配字段:
- 将CSV的`identifier`列映射到“参考代码”
- 将`title`列映射到“标题”
- 将`creator`列映射到“创建者”
- 关键步骤:在“高级选项”中,勾选“跳过重复项匹配”和“验证级别:严格”
导入完成后,系统会生成详细报告,列出所有成功、失败及重复的记录。失败记录可导出为CSV进行修正后重新导入。
四、高级批量处理技巧
1. 使用命令行API实现自动化
Archivematica提供完整的REST API。使用cURL批量创建著录任务:
```bash curl -X POST http://localhost:8000/api/v2beta/package/ \ -H "Authorization: ApiKey your_secure_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "name": "财务档案批量导入", "type": "transfer", "path": "/var/archivematica/sharedDirectory/transfers/finance_batch.zip", "metadata_set_id": "default", "auto_approve": true }' ```
API返回的JSON中包含任务ID,可用于查询状态:
```bash curl -X GET http://localhost:8000/api/v2beta/package/{task_id}/ \ -H "Authorization: ApiKey your_secure_api_key_here" ```
2. 复杂元数据关系的批量处理
处理层级档案(如案卷-文件结构)时,使用XML格式的EAD模板。以下是一个两级结构的示例片段:
```xml
在AtoM中,选择“EAD导入”并上传此XML文件,系统会自动解析层级关系并创建对应的档案结构树。
3. 批量著录后的数据校验脚本
编写Python脚本验证导入数据的完整性:
```python import csv import requests def verify_archivematica_records(api_key, transfer_uuid): url = f"http://localhost:8000/api/v2beta/package/{transfer_uuid}/" headers = {"Authorization": f"ApiKey {api_key}"} response = requests.get(url, headers=headers) data = response.json() if data['status'] == 'COMPLETE': 验证元数据字段完整性 for item in data['metadata']: required_fields = ['title', 'creator', 'date'] missing = [field for field in required_fields if not item.get(field)] if missing: print(f"记录 {item.get('identifier')} 缺少字段: {missing}") else: print(f"处理状态异常: {data['status']}") 执行验证 verify_archivematica_records("your_api_key", "transfer-uuid-here") ```
五、常见问题与解决方案
1. 中文乱码处理
在AtoM的`app/config/config_prod.yml`配置文件中添加:
```yaml all: default_culture: zh_CN fulltext_indexer: charset: UTF-8 ```
重启Elasticsearch服务:sudo systemctl restart elasticsearch
2. 批量导入速度优化
修改MySQL配置(`/etc/mysql/my.cnf`):
```ini [mysqld] innodb_buffer_pool_size = 2G bulk_insert_buffer_size = 256M max_allowed_packet = 256M ```
重启MySQL:sudo systemctl restart mysql
3. 文件格式兼容性问题
创建预处理脚本,将非常用格式转换为标准PDF:
```bash !/bin/bash for file in .doc .docx; do libreoffice --headless --convert-to pdf "$file" done ```
安装依赖:sudo apt install libreoffice
六、维护与监控
设置每日批量任务日志监控:
```bash 查看Archivematica批量任务状态 docker logs archivematica-dashboard 2>&1 | grep -E "(ERROR|批量任务)" 监控AtoM导入队列 sudo tail -f /usr/share/nginx/atom/log/prod.log | grep "import" ```
建立定期数据备份机制:
```bash 备份数据库 mysqldump -u root -p atom_db > /backup/atom_$(date +%Y%m%d).sql 备份Elasticsearch索引 curl -X POST "localhost:9200/_snapshot/backup_repository/snapshot_$(date +%Y%m%d)?wait_for_completion=true" ```