移除 langchain_community 依赖,内联 CSVLoader/TextLoader,可选化 ebooklib/bs4/mobi/html2text 导入
This commit is contained in:
parent
30ff027a51
commit
acc1822ada
@ -1,16 +1,31 @@
|
|||||||
import os
|
import os
|
||||||
|
import csv
|
||||||
import codecs
|
import codecs
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from langchain_community.document_loaders.csv_loader import CSVLoader
|
|
||||||
from langchain_community.document_loaders.text import TextLoader
|
|
||||||
from docx import Document
|
from docx import Document
|
||||||
from ebooklib import epub
|
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
from pptx import Presentation
|
from pptx import Presentation
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
import mobi
|
|
||||||
from pypdf import PdfReader
|
from pypdf import PdfReader
|
||||||
import html2text
|
|
||||||
|
try:
|
||||||
|
from ebooklib import epub
|
||||||
|
except ImportError:
|
||||||
|
epub = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
except ImportError:
|
||||||
|
BeautifulSoup = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
import mobi
|
||||||
|
except ImportError:
|
||||||
|
mobi = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
import html2text
|
||||||
|
except ImportError:
|
||||||
|
html2text = None
|
||||||
|
|
||||||
class BaseLoader:
|
class BaseLoader:
|
||||||
def __init__(self, file_path):
|
def __init__(self, file_path):
|
||||||
@ -26,11 +41,15 @@ class BaseLoader:
|
|||||||
raise Exception('Not implement')
|
raise Exception('Not implement')
|
||||||
|
|
||||||
class MyMobiLoader(BaseLoader):
|
class MyMobiLoader(BaseLoader):
|
||||||
def load_pagetext(self):
|
def load_pagetext(self):
|
||||||
tempdir, filepath = mobi.extract(self.filepath)
|
if mobi is None:
|
||||||
with codecs.open(filepath, "r", "utf-8") as f:
|
raise ImportError("mobi not installed. Run: pip install mobi")
|
||||||
content=f.read()
|
if html2text is None:
|
||||||
yield (0, html2text.html2text(content))
|
raise ImportError("html2text not installed. Run: pip install html2text")
|
||||||
|
tempdir, filepath = mobi.extract(self.filepath)
|
||||||
|
with codecs.open(filepath, "r", "utf-8") as f:
|
||||||
|
content=f.read()
|
||||||
|
yield (0, html2text.html2text(content))
|
||||||
|
|
||||||
class MyPdfLoader(BaseLoader):
|
class MyPdfLoader(BaseLoader):
|
||||||
def load_pagetext(self):
|
def load_pagetext(self):
|
||||||
@ -59,12 +78,11 @@ class MyPptLoader(BaseLoader):
|
|||||||
yield (i,'\n'.join(txts))
|
yield (i,'\n'.join(txts))
|
||||||
|
|
||||||
class MyCsvLoader(BaseLoader):
|
class MyCsvLoader(BaseLoader):
|
||||||
def load_pagetext(self):
|
def load_pagetext(self):
|
||||||
loader = CSVLoader(self.filepath)
|
with open(self.filepath, 'r', newline='', encoding='utf-8') as f:
|
||||||
docs = loader.load()
|
reader = csv.reader(f)
|
||||||
for i, d in enumerate(docs):
|
for i, row in enumerate(reader):
|
||||||
dat = (i, d.page_content)
|
yield (i, ' '.join(row))
|
||||||
yield dat
|
|
||||||
|
|
||||||
class MyExcelLoader(BaseLoader):
|
class MyExcelLoader(BaseLoader):
|
||||||
def load_pagetext(self):
|
def load_pagetext(self):
|
||||||
@ -97,12 +115,10 @@ class MyEpubLoader(BaseLoader):
|
|||||||
|
|
||||||
|
|
||||||
class MyTextLoader(BaseLoader):
|
class MyTextLoader(BaseLoader):
|
||||||
def load_pagetext(self):
|
def load_pagetext(self):
|
||||||
loader = TextLoader(self.filepath)
|
with open(self.filepath, 'r', encoding='utf-8') as f:
|
||||||
docs = loader.load()
|
content = f.read()
|
||||||
for i, d in enumerate(docs):
|
yield (0, content)
|
||||||
dat = (i, d.page_content)
|
|
||||||
yield dat
|
|
||||||
|
|
||||||
class File2Text:
|
class File2Text:
|
||||||
all_loaders = {
|
all_loaders = {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user