rag-poc / utils /_file_parser.py
kanha-upadhyay's picture
Add initial project structure with .gitignore, environment example, and utility modules
6586d52
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])