Doc Analyzer: The New Release - More Formats, More Flexibility

After the initial launch of Doc Analyzer, the project has evolved significantly. In this post, we’ll explore the new features and improvements introduced in the latest version.
Key New Features
1. Multi-Format Support
The most significant new feature is extended support for more document formats:
- PDF (as in the original version)
- DOC (legacy Word documents)
- DOCX (modern Word documents)
This expansion makes Doc Analyzer far more versatile and usable in many more business scenarios.
2. Modular Architecture
The application has been completely restructured following the Factory pattern, making it easier to:
- Add new document formats
- Maintain the code
- Test new features
Here’s an example of the new structure:
class ProcessorFactory:
@staticmethod
def get_processor(file_path):
if file_path.endswith('.pdf'):
return PDFProcessor()
elif file_path.endswith(('.doc', '.docx')):
return WordProcessor()
# Easy to add new processors
3. Role-Based Analysis
One of the most interesting new features is the introduction of specialized roles for analysis. Users can now choose between different roles that shape how the system analyzes documents and answers questions:
- Default: Objective, comprehensive analysis of the document
- Legal: Focus on legal implications and regulatory requirements
- Financial: Analysis of financial and economic aspects
- Travel: Geared toward logistics and travel planning
- Technical: Focus on technical and implementation details
Each role uses specialized prompts that steer the model toward a specific type of analysis. For example:
ROLE_PROMPTS = {
"legal": """Act as a legal consultant analyzing the content.
Focus on legal implications, regulatory requirements, and potential legal risks.""",
"financial": """Act as a financial advisor analyzing the content.
Focus on financial implications, costs, benefits, and ROI."""
# Other roles...
}
4. Language Model Flexibility
While the original version was tightly bound to DeepSeek R1, you can now use any Ollama model:
- DeepSeek R1 14B (the default, thanks to its excellent performance)
- Mistral 7B
- LLaMA 2
- And any other model supported by Ollama
Configuration is simple, via an environment variable:
LLM_MODEL=mistral:7b # or any other model
Improved Document Processing
Word Processor
The new WordProcessor handles both DOC and DOCX documents:
def process(self, file_obj):
# Smart format handling
if file_path.endswith('.docx'):
text = self._process_docx(file_path)
else: # .doc
text = self._process_doc(file_path)
# Chunking and processing
chunks = self.text_splitter.split_documents([doc])
return chunks
Key features:
- Automatic format handling
- Preservation of document structure
- Automatic cleanup of temporary files
- Optimized memory management
Processing Pipeline
The pipeline is now more robust:
- Automatic format detection
- Selection of the appropriate processor
- Text extraction
- Optimized chunking
- Embedding generation
- Vector storage
Interface Improvements
The Gradio interface has been completely revamped to support all the new features:
Role Selection
A new dropdown menu lets you select the desired analysis role, directly influencing the type of answer you’ll get. This lets you:
- Get specialized analyses for different domains
- Adapt answers to the specific context
- Receive insights that are more relevant to your use case
Other Improvements
The Gradio interface has been enriched with:
- Drag-and-drop support for more formats
- Visual feedback during processing
- Better error handling
- Role selection for the analysis
Configuration and Deployment
Configuration is more flexible thanks to new environment variables:
OLLAMA_HOST=host.docker.internal
OLLAMA_PORT=11434
CHROMA_DB_PATH=/app/data/chroma
LLM_MODEL=deepseek-r1:14b # Configurable
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
PERSIST_VECTORDB=false
Optimized Docker Compose
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- ./data:/app/data
env_file: .env
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
What’s Next
The project keeps evolving. Here’s what’s ahead:
- Support for more formats (epub, txt, md)
- Tokenization improvements
- A complete REST API
- An advanced caching system
Conclusion
Doc Analyzer has grown from a simple PDF analyzer into a complete document analysis platform. The new modular architecture and multi-format support make it an even more powerful tool for privacy-first document analysis.