ok error
This commit is contained in:
@@ -8,13 +8,35 @@ export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const formData = await req.formData();
|
||||
const file = formData.get("file") as File | null;
|
||||
// ✅ Validation améliorée du fichier
|
||||
if (!file) {
|
||||
return NextResponse.json(
|
||||
{ error: "Aucun fichier reçu." },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
console.log("📁 Fichier reçu:", file.name, "| Type:", file.type);
|
||||
|
||||
// Vérifications supplémentaires
|
||||
if (file.size === 0) {
|
||||
return NextResponse.json(
|
||||
{ error: "Le fichier est vide (0 bytes)." },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
if (file.size > 50 * 1024 * 1024) { // 50MB
|
||||
return NextResponse.json(
|
||||
{ error: "Le fichier est trop volumineux (max 50MB)." },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
console.log("📁 Fichier reçu:", {
|
||||
name: file.name,
|
||||
type: file.type,
|
||||
size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
|
||||
lastModified: new Date(file.lastModified).toISOString()
|
||||
});
|
||||
|
||||
let fileContent = "";
|
||||
const fileType = file.type;
|
||||
@@ -22,25 +44,56 @@ export async function POST(req: NextRequest) {
|
||||
// --- LOGIQUE D'EXTRACTION DE TEXTE ---
|
||||
if (fileType === "application/pdf") {
|
||||
console.log("📄 Traitement PDF en cours...");
|
||||
console.log("📊 Taille du fichier:", file.size, "bytes");
|
||||
|
||||
try {
|
||||
const buffer = Buffer.from(await file.arrayBuffer());
|
||||
console.log("📦 Buffer créé, taille:", buffer.length);
|
||||
|
||||
const data = await pdf(buffer);
|
||||
fileContent = data.text || "";
|
||||
console.log("✅ Extraction PDF réussie, longueur:", fileContent.length);
|
||||
|
||||
// ✅ Vérification supplémentaire
|
||||
console.log("✅ Extraction PDF réussie, longueur:", fileContent.length);
|
||||
console.log("📄 Nombre de pages:", data.numpages);
|
||||
console.log("ℹ️ Info PDF:", data.info?.Title || "Titre non disponible");
|
||||
|
||||
// ✅ Vérification améliorée
|
||||
if (!fileContent.trim()) {
|
||||
console.log("⚠️ PDF vide ou non lisible");
|
||||
console.log("⚠️ PDF vide - Détails:", {
|
||||
pages: data.numpages,
|
||||
metadata: data.metadata,
|
||||
info: data.info,
|
||||
extractedLength: fileContent.length
|
||||
});
|
||||
|
||||
// Détecter si c'est un PDF scanné
|
||||
const isScanned = data.info?.Creator?.includes('RICOH') ||
|
||||
data.info?.Creator?.includes('Canon') ||
|
||||
data.info?.Creator?.includes('HP') ||
|
||||
data.info?.Producer?.includes('Scanner') ||
|
||||
(data.numpages > 0 && fileContent.length < 50);
|
||||
|
||||
const errorMessage = isScanned
|
||||
? `Ce PDF semble être un document scanné (créé par: ${data.info?.Creator}). Les documents scannés contiennent des images de texte, pas du texte extractible.\n\n💡 Solutions :\n- Utilisez un PDF créé depuis Word/Google Docs\n- Appliquez l'OCR avec Adobe Acrobat\n- Recréez le document au lieu de le scanner`
|
||||
: `Le PDF ne contient pas de texte extractible.\n\nCela peut être dû à :\n- PDF scanné (image uniquement)\n- PDF protégé\n- PDF avec texte en images\n- Nombre de pages: ${data.numpages}`;
|
||||
|
||||
return NextResponse.json(
|
||||
{ error: "Le PDF ne contient pas de texte extractible ou est protégé." },
|
||||
{ error: errorMessage },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
} catch (pdfError) {
|
||||
console.error("❌ Erreur PDF détaillée:", pdfError);
|
||||
console.error("❌ Erreur PDF détaillée:", {
|
||||
message: pdfError instanceof Error ? pdfError.message : "Erreur inconnue",
|
||||
stack: pdfError instanceof Error ? pdfError.stack : undefined,
|
||||
fileName: file.name,
|
||||
fileSize: file.size,
|
||||
fileType: file.type
|
||||
});
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
error: `Erreur traitement PDF: ${pdfError instanceof Error ? pdfError.message : "Erreur inconnue"}. Vérifiez que le PDF n'est pas protégé ou corrompu.`,
|
||||
error: `Impossible de traiter ce PDF (${file.name}). Erreur: ${pdfError instanceof Error ? pdfError.message : "Erreur inconnue"}. Vérifiez que le PDF n'est pas protégé, corrompu ou scanné.`,
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user