文件内容+图片内容自动识别,建库索引查找的内部系统(点赞过1000 公开github)

文件索引和搜索系统 (IFD - Intelligent File Discovery)

在这里插入图片描述

在这里插入图片描述
扫描支持多种ocr直接把图片内容拾取
在这里插入图片描述
文件检索扫描后(耗时,特别图片识别,中文准确率选paddle,easyocr 中等,Tesseract 低一些,可能我没优化的缘故),入系统库后,直接搜索关键字,可以找到图片上出现过的文字内容,并找到相关文件在哪里。
应用场景:找文件,凭印象找文件,支持TXT, DOC/DOCX, PDF, PPT/PPTX, Excel,JPG, PNG, GIF, BMP (支持中英文)文档内,基本100%可以导入系统,图片识别不敢保证,但基本够用。

文件索引和搜索系统 (IFD - Intelligent File Discovery)

一个智能的文件索引和搜索系统,支持多种文件格式的内容识别和全文搜索。

📋 目录

🚀 功能特性

📁 文件扫描

  • 支持递归扫描指定目录
  • 自动识别文件类型
  • 智能跳过: 基于文件指纹的增量扫描,避免重复处理
  • 支持进度显示和实时反馈

🔍 内容识别

  • 文档处理: TXT, DOC/DOCX, PDF, PPT/PPTX, Excel
  • 图片OCR: JPG, PNG, GIF, BMP (支持中英文)
  • 模块化设计: 可轻松更换识别引擎

🗄️ 数据库管理

  • 使用SQLite数据库
  • 自动创建表结构和索引
  • 支持文件哈希去重
  • 内容全文索引
  • 数据库备份和恢复
  • 数据库优化和清理
  • 文件同步检查: 自动检测和修正数据库与物理文件的不一致

🔎 搜索功能

  • 全文搜索
  • 按文件类型搜索
  • 按时间范围搜索
  • 按文件路径搜索
  • 智能内容预览
  • 相关度排序
  • 高级过滤: 多文件类型、时间范围、排序选项

🌐 Web界面

  • 现代化界面: 响应式设计,支持移动端
  • 实时搜索: 输入关键词即时搜索
  • 高级过滤: 文件类型、时间范围、排序选项
  • 结果预览: 文件内容预览
  • 导出功能: CSV格式导出搜索结果
  • 系统管理: 扫描控制、数据库管理、OCR设置
  • 统计信息: 实时文件统计和数据库信息

🖼️ 多OCR引擎支持

  • pytesseract: 默认引擎,适合英文/数字/常规文档
  • paddleocr: 推荐中文场景,识别率高,首次加载慢
  • easyocr: 安装简单,支持多语言,适合快速体验
  • 动态切换: 可通过命令行或Web界面切换

🏗️ 系统架构

IFD/
├── src/
│   ├── config.py          # 配置管理
│   ├── database.py        # 数据库管理
│   ├── scanner.py         # 文件扫描器
│   ├── search.py          # 搜索引擎
│   ├── api.py            # Web API
│   ├── logger_config.py  # 日志配置
│   ├── static/           # Web界面
│   │   ├── index.html
│   │   ├── style.css
│   │   └── script.js
│   └── processors/       # 文件处理器
│       ├── base_processor.py
│       ├── text_processor.py
│       ├── doc_processor.py
│       ├── excel_processor.py
│       ├── pdf_processor.py
│       ├── ppt_processor.py
│       ├── image_processor.py
│       └── processor_factory.py
├── data/                 # 数据库文件
├── logs/                 # 日志文件
├── main.py              # 主程序入口
├── cli.py               # 命令行工具
├── start_gui.py         # Web GUI启动脚本
├── requirements.txt     # 依赖包
└── README.md           # 说明文档

📦 安装说明

系统要求

  • 操作系统: Windows 10/11 (推荐)
  • Python: 3.8 或更高版本
  • 内存: 建议 4GB 以上
  • 磁盘空间: 至少 2GB 可用空间

安装步骤

Windows用户 (推荐):

# 使用批处理脚本自动安装
start_service.bat

手动安装:

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
.venv\Scripts\activate  # Windows
source .venv/bin/activate  # Linux/macOS

# 安装依赖
pip install -r requirements.txt

# 复制配置文件
copy config.env.example .env

配置环境变量

编辑 .env 文件:

# 扫描路径(多个路径用逗号分隔)
SCAN_PATHS=C:\Users\YourName\Documents,D:\Work

# 数据库路径
DATABASE_PATH=./data/file_index.db

# OCR引擎设置
OCR_ENGINE=pytesseract
OCR_CONFIDENCE_THRESHOLD=0.5

# 服务器设置
HOST=127.0.0.1
PORT=8000

OCR引擎安装 (可选)

如果需要图片OCR功能,请安装Tesseract:

Windows:

  1. 下载并安装 Tesseract
  2. 将安装路径添加到环境变量

Linux:

sudo apt-get install tesseract-ocr
sudo apt-get install tesseract-ocr-chi-sim  # 中文简体

macOS:

brew install tesseract
brew install tesseract-lang  # 语言包

🚀 快速开始

1. 启动系统

# 启动Web GUI
python start_gui.py

# 或启动API服务
python main.py

2. 访问Web界面

启动后访问: http://127.0.0.1:8000

3. 基本使用流程

  1. 配置扫描路径 - 在 .env 文件中设置要扫描的目录
  2. 初始化数据库 - 创建数据库表结构
  3. 扫描文件 - 扫描并处理文件内容
  4. 搜索文件 - 使用关键词、文件类型等条件搜索
  5. 检查同步 - 定期检查数据库与物理文件的同步状态

🛠️ 使用方法

命令行工具

基础操作
# 初始化数据库
python cli.py db-init

# 扫描文件
python cli.py scan

# 搜索文件
python cli.py search -k "关键词"

# 查看统计
python cli.py stats

# 查看配置
python cli.py config
数据库管理
# 重置数据库 (自动备份)
python cli.py db-reset

# 备份数据库
python cli.py db-backup

# 恢复数据库
python cli.py db-restore backup.db

# 优化数据库
python cli.py db-optimize

# 查看数据库信息
python cli.py db-info

# 列出备份文件
python cli.py db-backups
OCR引擎管理
# 查看OCR引擎信息
python cli.py ocr-info

# 设置OCR引擎
python cli.py ocr-set paddleocr

# 查看OCR配置
python cli.py ocr-config
文件同步检查
# 检查并修正文件同步状态
python cli.py check

🌐 Web界面功能

搜索功能

  • 实时搜索: 输入关键词即时搜索
  • 高级过滤: 文件类型、时间范围、排序选项
  • 结果预览: 文件内容预览
  • 导出功能: CSV格式导出搜索结果

系统管理

  • 扫描控制: 开始/停止文件扫描
  • 实时进度: 扫描进度实时显示
  • 数据库管理: 备份、优化操作
  • OCR设置: 引擎切换、参数配置

统计信息

  • 文件统计: 总文件数、图片文件、文档文件
  • 数据库信息: 数据库大小、最后扫描时间
  • 实时更新: 操作后自动刷新统计

🗄️ 数据库管理

备份和恢复

  • 自动备份: 重置数据库时自动创建备份
  • 手动备份: 随时创建数据库备份
  • 备份恢复: 从备份文件恢复数据库
  • 备份管理: 查看备份文件

优化和清理

  • 数据库优化: 重建索引、清理空间、删除孤立记录
  • 性能监控: 查看数据库大小、记录数等

文件同步检查

  • 自动检测: 检测数据库记录与物理文件的不一致
  • 自动修正: 自动修正不一致的记录
  • 详细报告: 提供详细的同步检查报告

安全特性

  • 备份保护: 重要操作前自动备份
  • 数据完整性: 外键约束保证数据一致性
  • 错误恢复: 操作失败时的回滚机制

🔧 OCR引擎管理

引擎选择

  • pytesseract: 默认引擎,适合英文/数字/常规文档,依赖Tesseract本地安装
  • paddleocr: 适合中文、复杂场景,需安装 paddlepaddlepaddleocr,识别率高,首次加载慢
  • easyocr: 安装简单,支持多语言,适合快速体验

切换方法

  1. 配置文件设置
    OCR_ENGINE=easyocr
    
  2. 命令行切换
    python cli.py ocr-set easyocr
    
  3. 查看当前引擎
    python cli.py ocr-info
    

依赖安装

pip install pytesseract pillow
pip install paddlepaddle paddleocr
pip install easyocr

优化建议

  • 图片模糊、低分辨率、复杂背景会影响识别效果,建议开启图片预处理(默认已开启)
  • 可调整 .envOCR_CONFIDENCE_THRESHOLD 提高置信度过滤
  • 多引擎对比:如识别效果不理想,可切换引擎尝试
  • 详细日志可在 ./logs/app.log 查看

🌐 API接口

基础操作

# 扫描文件
curl -X POST "http://127.0.0.1:8000/api/scan"

# 搜索文件
curl -X POST "http://127.0.0.1:8000/api/search" \
     -H "Content-Type: application/json" \
     -d '{"query": "财务报表"}'

# 获取统计
curl "http://127.0.0.1:8000/api/statistics"

数据库管理

# 备份数据库
curl -X POST "http://127.0.0.1:8000/api/db/backup"

# 优化数据库
curl -X POST "http://127.0.0.1:8000/api/db/optimize"

# 获取数据库信息
curl "http://127.0.0.1:8000/api/db/info"

# 获取备份列表
curl "http://127.0.0.1:8000/api/db/backups"

OCR管理

# 获取OCR信息
curl "http://127.0.0.1:8000/api/ocr-info"

# 设置OCR引擎
curl -X POST "http://127.0.0.1:8000/api/ocr-set" \
     -H "Content-Type: application/json" \
     -d '{"engine": "paddleocr"}'

文件同步检查

# 检查文件同步状态
curl -X POST "http://127.0.0.1:8000/api/check"

📊 数据库结构

files 表

  • id: 主键
  • file_path: 文件路径 (唯一)
  • file_name: 文件名
  • file_size: 文件大小
  • file_type: 文件类型
  • created_time: 创建时间
  • modified_time: 修改时间
  • file_hash: 文件哈希值
  • is_processed: 是否已处理

file_contents 表

  • id: 主键
  • file_id: 文件ID (外键)
  • content_type: 内容类型 (text/ocr_text)
  • content: 文件内容

search_index 表

  • id: 主键
  • file_id: 文件ID (外键)
  • keyword: 关键词
  • position: 位置

🔧 故障排除

常见问题

  1. OCR功能不可用

    • 检查Tesseract是否正确安装
    • 确认环境变量设置
    • 尝试切换OCR引擎
  2. 文件处理失败

    • 检查文件是否损坏
    • 确认文件格式支持
    • 查看日志文件
  3. 数据库错误

    • 检查数据库文件权限
    • 确认磁盘空间充足
    • 尝试数据库优化或清理
  4. 备份恢复失败

    • 确认备份文件完整性
    • 检查备份文件路径
    • 验证备份文件格式
  5. Web界面无法访问

    • 检查端口是否被占用
    • 确认防火墙设置
    • 查看服务器日志
  6. 依赖包安装失败

    • 检查网络连接
    • 使用国内镜像源:
      pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
      
  7. 扫描路径配置错误

    • 确保路径存在且有访问权限
    • 路径中使用正斜杠(/)或双反斜杠(\)
    • 多个路径用逗号分隔,不要有空格

获取帮助

  • 查看日志: ./logs/app.log
  • 系统状态: python cli.py db-info
  • 配置检查: python cli.py config
  • OCR信息: python cli.py ocr-info

🔧 扩展开发

添加新的文件处理器

  1. 继承 BaseProcessor
  2. 实现必要的方法
  3. ProcessorFactory 中注册
from .base_processor import BaseProcessor

class CustomProcessor(BaseProcessor):
    def can_process(self, file_path: str) -> bool:
        return file_path.lower().endswith('.custom')
    
    def process(self, file_path: str) -> Dict[str, Any]:
        # 实现处理逻辑
        pass
    
    def get_supported_extensions(self) -> list:
        return ['.custom']

更换OCR引擎

from src.processors.image_processor import ImageProcessor

# 创建新的OCR引擎
class CustomOCREngine:
    def image_to_string(self, image, lang=None, config=None):
        # 实现OCR逻辑
        pass

# 替换OCR引擎
image_processor = ImageProcessor()
image_processor.set_ocr_engine(CustomOCREngine())

📚 文档资源

  • API文档: 启动后访问 http://127.0.0.1:8000/docs
  • 项目地址: [GitHub Repository]
  • 问题反馈: [Issues]

📄 许可证

MIT License

🤝 贡献

欢迎提交Issue和Pull Request!


版本: 1.0
更新时间: 2025-01-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值