File size: 1,887 Bytes
df99d65
 
 
 
3104437
df99d65
 
 
3104437
df99d65
 
 
 
 
 
 
 
 
3104437
df99d65
 
 
 
3104437
df99d65
 
 
 
 
 
 
3104437
 
df99d65
 
 
3104437
df99d65
 
 
 
 
3104437
 
 
 
df99d65
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import chardet
from fastapi import UploadFile, HTTPException
from io import BytesIO
from docx import Document
import PyPDF2

async def file_to_text(file: UploadFile):
    file_extension = file.filename.split('.')[-1].lower()
    # Fait 
    if file_extension == 'csv':
            csv_data = await file.read()
            encoding = chardet.detect(csv_data)['encoding']
            try:
                decoded_data = csv_data.decode(encoding)
                return decoded_data
            except UnicodeDecodeError:
                raise HTTPException(status_code=400, detail="Le fichier CSV contient des caractères qui ne peuvent pas être décodés.")

    # Fait 
    elif file_extension == 'json':
        json_data = await file.read()
        return json_data.decode()

    # Fait 
    elif file_extension == 'docx':
        doc_data = await file.read()
        # Utilisez un flux mémoire pour passer les données au Document
        doc_stream = BytesIO(doc_data)
        doc = Document(doc_stream)
        doc_text = [paragraph.text for paragraph in doc.paragraphs]
        return '\n'.join(doc_text)
    
    # Fait 
    elif file_extension == 'txt':
        txt_data = await file.read()
        return txt_data.decode()
    
    # Fait 
    elif file_extension == 'pdf':
        try:
            pdf_data = await file.read()
            # Chargez les données binaires dans un objet fitz.Document
            pdf_document = PyPDF2.PdfReader(BytesIO(pdf_data))
            text = ""
            for page_number in range(len(pdf_document.pages)):
                text += pdf_document.pages[page_number].extract_text()
            return text
        except Exception as e:
            raise HTTPException(status_code=500, detail=f"Erreur de lecture du fichier PDF : {e}")

    else:
        return HTTPException(status_code=400, detail="Format de fichier non pris en charge")