SecurityRonin/nameback

GitHub: SecurityRonin/nameback

基于元数据提取和 OCR 技术的智能文件重命名工具,帮助恢复文件的可读性名称。

Stars: 10 | Forks: 0

nameback logo

# nameback 根据文件元数据重命名文件。自动从文件中提取标题、日期和描述,赋予它们有意义的名称。 **可用工具:** - 🖥️ **CLI** - 用于自动化和脚本编写的命令行工具 - 🎨 **GUI** - 适用于所有平台的可视化双栏界面(Midnight Commander 风格) ## 功能介绍 利用嵌入的元数据将无意义的文件名转换为描述性文件名: ``` IMG_2847.jpg → 2024-03-15_sunset.jpg document.pdf → Annual_Report_2024.pdf screenshot_20241015.png → 輸入_姓名.png (Chinese OCR) VID_20241015.mp4 → Product_Demo_Video.mp4 (frame OCR) IMG_3847.heic → Family_Reunion_2024.heic ``` ## 安装说明 ### macOS ``` brew tap h4x0r/nameback brew install nameback ``` 自动安装所有依赖项。 ### Windows 从 [releases](https://github.com/h4x0r/nameback/releases/latest) 下载并安装 `nameback-x86_64-pc-windows-msvc.msi` **你将获得:** - **CLI**:在任何终端中输入 `nameback`(自动添加到 PATH) - **GUI**:从开始菜单 → nameback 启动 - **自动安装依赖项**:自动安装 exiftool, tesseract, ffmpeg, imagemagick 无需手动设置 - 开箱即用! **静默安装:** `msiexec /i nameback-x86_64-pc-windows-msvc.msi /quiet` ### Linux #### CLI 工具(命令行) ``` cargo install nameback nameback --install-deps # Interactive dependency installation ``` #### GUI 应用程序(可视化界面) ``` cargo install nameback --bin nameback-gui nameback-gui ``` #### Debian/Ubuntu/Kali(.deb 软件包) ``` # 从 releases 下载 wget https://github.com/h4x0r/nameback/releases/latest/download/nameback_0.4.1_amd64.deb sudo dpkg -i nameback_0.4.1_amd64.deb sudo apt-get install -f # Install dependencies ``` `.deb` 软件包同时包含 CLI 和 GUI 工具。 [查看所有安装选项](docs/GUIDE.md#installation-options) ## 安全与验证 所有发布产物都使用 SLSA 构建来源证明进行签名,以确保供应链安全。您可以验证下载的文件是真实的,且未被篡改。 ### 验证下载的文件 **前置条件:** 安装 [GitHub CLI](https://cli.github.com/) **验证任何产物:** ``` # 验证 MSI 安装程序 gh attestation verify nameback-x86_64-pc-windows-msvc.msi --owner h4x0r # 验证 DMG 安装程序 gh attestation verify nameback-x86_64-apple-darwin.dmg --owner h4x0r # 验证 .deb 包 gh attestation verify nameback_0.5.0-1_amd64.deb --owner h4x0r ``` **这验证了什么:** - ✅ 由官方 h4x0r/nameback 仓库构建 - ✅ 从官方发布工作流构建 - ✅ 构建后未被篡改 - ✅ 显示构建它的确切 commit SHA **使用校验和进行额外验证:** 从 [发布页面](https://github.com/h4x0r/nameback/releases/latest) 下载 `checksums.txt`,然后: ``` # macOS shasum -a 256 -c checksums.txt --ignore-missing # Linux sha256sum -c checksums.txt --ignore-missing # Windows (PowerShell) Get-Content checksums.txt | Select-String "nameback.*windows" | ForEach-Object { $hash, $file = $_ -split ' ' if ((Get-FileHash $file -Algorithm SHA256).Hash -eq $hash.ToUpper()) { "✓ $file verified" } else { "✗ $file FAILED" } } ``` `--ignore-missing` 标志允许您仅验证下载的文件,而不会因其他平台的文件而报错。 为了最大程度的安全,请**同时**使用来源验证(证明真实性)和校验和验证(证明完整性)。 ## 快速入门 ### CLI(命令行) ``` # 预览变更内容(安全,不做任何修改) nameback ~/Pictures --dry-run # 重命名文件 nameback ~/Pictures ``` ### GUI(所有平台) **Windows:** 开始菜单 → nameback **macOS (Homebrew):** 在终端中运行 `nameback-gui` **Linux (cargo install):** 在终端中运行 `nameback-gui` **Linux (.deb 软件包):** 从应用程序菜单启动或运行 `nameback-gui` 1. 点击 **"📁 Select Directory"** 选择文件夹 2. 在右侧栏中查看建议的重命名(左侧为原始名称) 3. 勾选/取消勾选要重命名的文件 4. 点击 **"✅ Rename X Files"** 应用更改 **功能特性:** - 📂 可视化双栏界面(Midnight Commander 风格) - ✅ 单个文件的复选框选择 - 🔄 重命名前的实时预览 - ✔️ 颜色编码状态(待处理、成功、错误) ## 常见示例 ``` # 整理数据恢复中恢复的文件 nameback /tmp/photorec --dry-run # 使用 OCR 处理截图文件夹 nameback ~/Desktop/Screenshots --verbose # 清理 iPhone 照片导出(支持 HEIC) nameback ~/Desktop/iPhone_Export # 整理下载的文档 nameback ~/Downloads --dry-run ``` ## 功能特性 - **智能命名启发式** - 质量评分系统,从多个来源中选择最佳名称 - **智能照片重命名** - 使用 JPEG, PNG, HEIC/HEIF 中的 EXIF 数据(日期、描述、GPS 位置) - **PDF 智能** - 从元数据或文档内容中提取标题,支持扫描 PDF 的 OCR - **增强文本提取** - Markdown frontmatter, CSV 语义列, 嵌套 JSON/YAML 字段 - **上下文感知命名** - 利用目录结构和文件名分析生成更好的名称 - **多帧视频分析** - 提取多个帧(1s, 5s, 10s)并选择最佳 OCR 结果(默认行为) - **序列检测** - 自动检测并维护文件序列编号(例如:vacation_001.jpg, vacation_002.jpg) - **特定格式处理器** - 电子邮件文件、网络存档、存档、源代码 docstrings - **位置与时间戳增强** - 可选的 GPS 坐标和格式化的时间戳包含在文件名中 - **多语言 OCR** - 支持繁体中文、简体中文、英文(以及 160 多种其他语言) - **高级过滤** - 自动拒绝低质量名称(错误、设备名称、通用占位符) - **HEIC 支持** - 原生支持 Apple 的高效图像格式 - **安全可靠** - 预览模式、不覆盖、阻止 root 执行、仅限同目录操作 ## 选项 ``` nameback # Rename files (includes GPS location & timestamps by default) nameback --dry-run # Preview changes only nameback --verbose # Show detailed progress nameback --skip-hidden # Skip hidden files nameback --no-location # Exclude GPS location from filenames nameback --no-timestamp # Exclude timestamps from filenames nameback --no-geocode # Use raw GPS coordinates instead of city names nameback --fast-video # Use single-frame video analysis (faster, less accurate) nameback --check-deps # Check dependencies nameback --install-deps # Install dependencies ``` **默认行为:** 默认情况下,nameback 在文件名中包含 GPS 位置(反向地理编码为城市名称,如 "Seattle_WA")和时间戳(如果可用)。使用 `--no-location`, `--no-timestamp`, 或 `--no-geocode` 禁用这些功能。 ## 了解更多 - [完整指南](docs/GUIDE.md) - 安装选项、高级功能、故障排除 - **[智能命名启发式](docs/naming-heuristics.md)** - nameback 如何使用质量评分、内容提取和智能过滤来选择最佳文件名 - [元数据提取详情](docs/GUIDE.md#metadata-extraction-details) - nameback 如何优先处理不同的元数据字段 - [高级功能](docs/GUIDE.md#advanced-features) - 多语言 OCR, HEIC 支持, 视频帧提取 - [故障排除](docs/GUIDE.md#troubleshooting) - 常见问题及解决方案 ## 安全 Nameback 是按照安全最佳实践开发的。如果您想在 GitHub 仓库中进行自动化安全控制,请查看同一作者 的 [1-click-github-sec](https://github.com/h4x0r/1-click-github-sec) - 自动化 Dependabot, CodeQL, 密钥扫描等。 ## 第三方依赖 Nameback 使用以下开源依赖项: ### 必需 - **[ExifTool](https://exiftool.org/)** by Phil Harvey - 元数据提取 - 许可证:GPL-1.0-or-later OR Perl Artistic License - 参见:[third_party/exiftool/NOTICE](third_party/exiftool/NOTICE) ### 可选 - **[Tesseract OCR](https://github.com/tesseract-ocr/tesseract)** by Google Inc. - 光学字符识别 - 许可证:Apache-2.0 - 参见:[third_party/tesseract/NOTICE](third_party/tesseract/NOTICE) - **[FFmpeg](https://ffmpeg.org/)** - 用于视频帧提取的多媒体框架 - 许可证:LGPL-2.1-or-later(仅限 LGPL 构建) - 本软件使用来自 FFmpeg 项目的库,基于 LGPLv2.1 - 源代码:https://ffmpeg.org/download.html - 参见:[third_party/ffmpeg/NOTICE](third_party/ffmpeg/NOTICE) - **[ImageMagick](https://imagemagick.org/)** by ImageMagick Studio LLC - HEIC 图像格式支持 - 许可证:ImageMagick License(类 Apache) - 参见:[third_party/imagemagick/NOTICE](third_party/imagemagick/NOTICE) 所有许可证文本均可在 [LICENSES](LICENSES/) 目录中找到。有关详细的归属信息,请参阅 [third_party/README.md](third_party/README.md)。 ### 安装回退机制 Nameback 使用 4 层回退系统,以确保即使在受限的网络环境中也能成功安装依赖项: 1. **主要包管理器**(Scoop/Chocolatey/Homebrew/apt) 2. **DNS 回退** - 使用公共 DNS 服务器(8.8.8.8, 1.1.1.1)重试 3. **备用包管理器** - MacPorts, dnf, yum, pacman, snap 4. **捆绑安装程序** - 从 GitHub Releases 下载(新增!) 这确保了在企业防火墙、VPN 和区域限制下也能达到约 99% 的安装成功率。 ## 文档 📚 **[完整文档 →](docs/README.md)** - **[用户指南](docs/user/guide.md)** - 全面的使用指南 - **[开发文档](docs/dev/)** - 贡献、TDD、重构计划 - **[架构文档](docs/architecture/)** - 技术设计和实现细节 - **[发布流程](RELEASING.md)** - 如何创建发布 ## 维护者须知 有关使用 cargo-release 的发布流程,请参阅 [RELEASING.md](RELEASING.md)。 ## 许可证 MIT 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件 由 Albert Hui ([@4n6h4x0r](https://github.com/h4x0r)) 创建 使用 [Claude Code](https://claude.com/claude-code) 构建
标签:ExifTool, HTTP工具, OCR识别, PDF处理, Rust, Tesseract, 二进制发布, 元数据提取, 元数据清洗, 可视化界面, 名称恢复, 图形界面, 图片处理, 开源工具, 批量重命名, 效率工具, 数字取证, 数字取证, 数据恢复, 文件管理, 文件重命名, 网络安全审计, 网络流量审计, 自动化脚本, 自动化脚本, 视频处理, 进程保护, 通知系统