🔍 Guide Apache Tika Server - Document Parsing API
📋 Vue d'ensemble
Apache Tika est un serveur de parsing de documents qui extrait du texte et des métadonnées depuis plus de 1000+ formats de fichiers (PDF, Office, HTML, images avec OCR, etc.).
Version déployée : Apache Tika 3.2.3 (latest-full avec Tesseract OCR) Type : Docker container Port : 9998 API : REST (HTTP)
📊 Informations du déploiement
| Propriété | Valeur |
|---|---|
| Serveur | srv759970.hstgr.cloud (69.62.108.82) |
| Chemin | /opt/tika-server/ |
| Container | tika-server |
| Image Docker | apache/tika:latest-full |
| Port interne | 9998 |
| Port externe | 9998 |
| Auto-restart | Oui (unless-stopped) |
| Healthcheck | Activé (30s interval) |
🚀 Accès et utilisation
URL d'accès
Production (HTTPS) :
Local (sur le serveur) :
Direct (non recommandé) :
Recommandation : Utilisez toujours l'URL HTTPS pour un accès sécurisé depuis l'extérieur.
🔧 Utilisation de l'API
1. Vérifier que le serveur fonctionne
Réponse attendue :
2. Obtenir la version
Réponse :
3. Parser un document (extraire le texte)
curl -X PUT --data-binary @document.pdf \
https://tika.srv759970.hstgr.cloud/tika \
--header "Accept: text/plain"
Formats supportés : - PDF - Microsoft Office (Word, Excel, PowerPoint) - OpenOffice/LibreOffice - HTML, XML - Images (avec OCR Tesseract) : PNG, JPG, TIFF - Archives : ZIP, TAR, GZIP - Et 1000+ autres formats
4. Extraire les métadonnées
curl -X PUT --data-binary @document.pdf \
https://tika.srv759970.hstgr.cloud/meta \
--header "Accept: application/json"
Retourne : Métadonnées JSON (auteur, date création, titre, format, etc.)
5. Détecter le type MIME d'un fichier
📚 Endpoints principaux
| Endpoint | Méthode | Description |
|---|---|---|
/tika | GET | Informations serveur |
/tika | PUT | Extraire texte d'un document |
/meta | PUT | Extraire métadonnées JSON |
/detect/stream | PUT | Détecter type MIME |
/version | GET | Version Apache Tika |
/tika/form | POST | Upload multipart form |
/rmeta | PUT | Métadonnées récursives (archives) |
Documentation complète : https://cwiki.apache.org/confluence/display/TIKA/TikaServer
🐳 Gestion du container
Voir les logs
Redémarrer le serveur
Arrêter le serveur
Démarrer le serveur
Mettre à jour vers la dernière version
Vérifier l'état du container
Vérifier le healthcheck
🌐 Configuration Nginx (optionnel - accès HTTPS public)
Pour exposer Tika via HTTPS avec un sous-domaine :
Créer la configuration Nginx
ssh root@69.62.108.82 "cat > /etc/nginx/sites-available/tika" <<'EOF'
server {
listen 80;
server_name tika.srv759970.hstgr.cloud;
location / {
proxy_pass http://localhost:9998;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Augmenter timeout pour gros documents
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
# Augmenter taille max upload
client_max_body_size 100M;
}
}
EOF
Activer le site
ssh root@69.62.108.82 "ln -s /etc/nginx/sites-available/tika /etc/nginx/sites-enabled/"
ssh root@69.62.108.82 "nginx -t && systemctl reload nginx"
Obtenir un certificat SSL (Let's Encrypt)
URL finale : https://tika.srv759970.hstgr.cloud
✅ Statut : Configuré et opérationnel
💡 Exemples d'utilisation
Exemple Python
import requests
# Parser un PDF
with open('document.pdf', 'rb') as f:
response = requests.put(
'https://tika.srv759970.hstgr.cloud/tika',
data=f,
headers={'Accept': 'text/plain'}
)
text = response.text
print(text)
# Extraire métadonnées
with open('document.pdf', 'rb') as f:
response = requests.put(
'https://tika.srv759970.hstgr.cloud/meta',
data=f,
headers={'Accept': 'application/json'}
)
metadata = response.json()
print(metadata)
Exemple JavaScript (Node.js)
const fs = require('fs');
const axios = require('axios');
// Parser un document
const fileBuffer = fs.readFileSync('document.pdf');
axios.put('https://tika.srv759970.hstgr.cloud/tika', fileBuffer, {
headers: {
'Accept': 'text/plain'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
Exemple cURL (batch de fichiers)
# Parser tous les PDFs d'un dossier
for file in *.pdf; do
echo "Processing: $file"
curl -X PUT --data-binary @"$file" \
https://tika.srv759970.hstgr.cloud/tika \
--header "Accept: text/plain" \
> "${file%.pdf}.txt"
done
⚠️ Limites et recommandations
Limites actuelles
- Taille max documents : Limitée par RAM disponible (~2GB recommandé par document)
- Timeout : 2 minutes par défaut (configurable)
- Concurrent requests : Limité par CPU/RAM serveur
Bonnes pratiques
- Documents volumineux : Traiter par batch ou augmenter timeout
- Sécurité : Ne pas exposer directement sur Internet sans authentification
- Performance : Pour volumes élevés, considérer un cluster Tika
- OCR : Ralentit le traitement, désactiver si pas nécessaire
Optimisation pour production
# docker-compose.yml avec configuration optimisée
version: '3.8'
services:
tika:
image: apache/tika:latest-full
container_name: tika-server
ports:
- "9998:9998"
restart: unless-stopped
environment:
- TZ=Europe/Paris
- TIKA_CONFIG=/tika-config.xml # Config personnalisée
volumes:
- ./tika-config.xml:/tika-config.xml:ro
deploy:
resources:
limits:
memory: 4G
cpus: '2.0'
🔍 Troubleshooting
Le serveur ne démarre pas
# Vérifier les logs
ssh root@69.62.108.82 "docker logs tika-server"
# Vérifier que le port n'est pas utilisé
ssh root@69.62.108.82 "netstat -tlnp | grep 9998"
# Rebuild from scratch
ssh root@69.62.108.82 "cd /opt/tika-server && docker-compose down && docker-compose pull && docker-compose up -d"
Erreur "Out of Memory"
# Augmenter la RAM allouée au container
# Modifier docker-compose.yml :
deploy:
resources:
limits:
memory: 4G
Timeout sur gros documents
# Augmenter le timeout dans la requête
curl -X PUT --data-binary @large.pdf \
--max-time 600 \
http://69.62.108.82:9998/tika
Problème OCR (images)
# Vérifier que Tesseract est bien inclus (version full)
ssh root@69.62.108.82 "docker exec tika-server tesseract --version"
📊 Monitoring et maintenance
Vérifier l'utilisation des ressources
Logs de parsing
Espace disque
🔗 Ressources utiles
- Documentation officielle : https://tika.apache.org/
- API REST docs : https://cwiki.apache.org/confluence/display/TIKA/TikaServer
- Docker Hub : https://hub.docker.com/r/apache/tika
- GitHub : https://github.com/apache/tika
- Formats supportés : https://tika.apache.org/2.6.0/formats.html
📝 Configuration actuelle (docker-compose.yml)
version: '3.8'
services:
tika:
image: apache/tika:latest-full
container_name: tika-server
ports:
- "9998:9998"
restart: unless-stopped
environment:
- TZ=Europe/Paris
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9998/tika"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
✅ Checklist de déploiement
- Container Docker créé et démarré
- API accessible sur port 9998
- Healthcheck configuré et opérationnel
- Tests de parsing réussis
- Logs vérifiés (pas d'erreur)
- Nginx reverse proxy configuré
- Certificat SSL installé (Let's Encrypt)
- HTTPS fonctionnel sur https://tika.srv759970.hstgr.cloud
- (Optionnel) Authentification ajoutée
Dernière mise à jour : Octobre 2025 Version Apache Tika : 3.2.3 Status : ✅ En production Contact serveur : root@69.62.108.82