CoolFace
Apppublic

llmbb/LLMBB-Agent

sourceHugging Faceapache-2.0updated 3y agoView on Hugging Face
1likes
doc_parser.py81 linesDownload Raw Back to utils
1import re2 3from agent.utils.tokenization_qwen import count_tokens4 5 6def rm_newlines(text):7    text = re.sub(r'(?<=[^\.。::])\n', ' ', text)8    return text9 10 11def rm_cid(text):12    text = re.sub(r'\(cid:\d+\)', '', text)13    return text14 15 16def rm_hexadecimal(text):17    text = re.sub(r'[0-9A-Fa-f]{21,}', '', text)18    return text19 20 21def deal(text):22    text = rm_newlines(text)23    text = rm_cid(text)24    text = rm_hexadecimal(text)25    return text26 27 28def parse_doc(path):29    if '.pdf' in path.lower():30        from langchain.document_loaders import PDFMinerLoader31        loader = PDFMinerLoader(path)32        pages = loader.load_and_split()33    elif '.docx' in path.lower():34        from langchain.document_loaders import Docx2txtLoader35        loader = Docx2txtLoader(path)36        pages = loader.load_and_split()37    elif '.pptx' in path.lower():38        from langchain.document_loaders import UnstructuredPowerPointLoader39        loader = UnstructuredPowerPointLoader(path)40        pages = loader.load_and_split()41    else:42        from langchain.document_loaders import UnstructuredFileLoader43        loader = UnstructuredFileLoader(path)44        pages = loader.load_and_split()45 46    res = []47    for page in pages:48        dealed_page_content = deal(page.page_content)49        res.append({50            'page_content': dealed_page_content,51            'token': count_tokens(dealed_page_content),52            'metadata': page.metadata53        })54 55    return res56 57 58def pre_process_html(s):59    # replace multiple newlines60    s = re.sub('\n+', '\n', s)61    # replace special string62    s = s.replace("Add to Qwen's Reading List", '')63    return s64 65 66def parse_html_bs(path):67    from langchain.document_loaders import BSHTMLLoader68 69    loader = BSHTMLLoader(path, open_encoding='utf-8')70    pages = loader.load_and_split()71    res = []72    for page in pages:73        dealed_page_content = pre_process_html(page.page_content)74        res.append({75            'page_content': dealed_page_content,76            'token': count_tokens(dealed_page_content),77            'metadata': page.metadata78        })79 80    return res81