File size: 3,939 Bytes
6586d52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from llama_index.core import SimpleDirectoryReader
from llama_index.core.schema import Document
from llama_parse import LlamaParse


class FileParser:
    def __init__(self):
        self.parser = LlamaParse(
            result_type="markdown",
            auto_mode=True,
            auto_mode_trigger_on_image_in_page=True,
            auto_mode_trigger_on_table_in_page=True,
        )
        self.file_extractor = {
            # Base types
            ".pdf": self.parser,
            # Documents and presentations
            ".abw": self.parser,
            ".cgm": self.parser,
            ".cwk": self.parser,
            ".doc": self.parser,
            ".docx": self.parser,
            ".docm": self.parser,
            ".dot": self.parser,
            ".dotm": self.parser,
            ".hwp": self.parser,
            ".key": self.parser,
            ".lwp": self.parser,
            ".mw": self.parser,
            ".mcw": self.parser,
            ".pages": self.parser,
            ".pbd": self.parser,
            ".ppt": self.parser,
            ".pptm": self.parser,
            ".pptx": self.parser,
            ".pot": self.parser,
            ".potm": self.parser,
            ".potx": self.parser,
            ".rtf": self.parser,
            ".sda": self.parser,
            ".sdd": self.parser,
            ".sdp": self.parser,
            ".sdw": self.parser,
            ".sgl": self.parser,
            ".sti": self.parser,
            ".sxi": self.parser,
            ".sxw": self.parser,
            ".stw": self.parser,
            ".sxg": self.parser,
            ".uof": self.parser,
            ".uop": self.parser,
            ".uot": self.parser,
            ".vor": self.parser,
            ".wpd": self.parser,
            ".wps": self.parser,
            ".xml": self.parser,
            ".zabw": self.parser,
            ".epub": self.parser,
            # Images
            ".jpg": self.parser,
            ".jpeg": self.parser,
            ".png": self.parser,
            ".gif": self.parser,
            ".bmp": self.parser,
            ".svg": self.parser,
            ".tiff": self.parser,
            ".webp": self.parser,
            ".web": self.parser,
            ".htm": self.parser,
            ".html": self.parser,
            # Spreadsheets
            ".xlsx": self.parser,
            ".xls": self.parser,
            ".xlsm": self.parser,
            ".xlsb": self.parser,
            ".xlw": self.parser,
            ".csv": self.parser,
            ".dif": self.parser,
            ".sylk": self.parser,
            ".slk": self.parser,
            ".prn": self.parser,
            ".numbers": self.parser,
            ".et": self.parser,
            ".ods": self.parser,
            ".fods": self.parser,
            ".uos1": self.parser,
            ".uos2": self.parser,
            ".dbf": self.parser,
            ".wk1": self.parser,
            ".wk2": self.parser,
            ".wk3": self.parser,
            ".wk4": self.parser,
            ".wks": self.parser,
            ".123": self.parser,
            ".wq1": self.parser,
            ".wq2": self.parser,
            ".wb1": self.parser,
            ".wb2": self.parser,
            ".wb3": self.parser,
            ".qpw": self.parser,
            ".xlr": self.parser,
            ".eth": self.parser,
            ".tsv": self.parser,
            # Audio
            ".mp3": self.parser,
            ".mp4": self.parser,
            ".mpeg": self.parser,
            ".mpga": self.parser,
            ".m4a": self.parser,
            ".wav": self.parser,
            ".webm": self.parser,
        }

    def parse(self, input_dir: str, ocr_enabled: bool = False):
        documents: list[Document] = SimpleDirectoryReader(
            input_dir=input_dir,
            file_extractor=self.file_extractor if ocr_enabled else None,
        ).load_data()
        return "\n".join([doc.text for doc in documents])