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])
|