From 75ff268e8830aa7e473a096dc1c5ac39af36e8ca Mon Sep 17 00:00:00 2001 From: Creation <38677757+596192804@users.noreply.github.com> Date: Fri, 12 Jan 2024 11:04:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=91=E5=A2=9E=E5=BC=BA=E5=AF=B9PPT=E3=80=81DOC=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=BA=93=E6=96=87=E4=BB=B6=E7=9A=84OCR=E8=AF=86?= =?UTF-8?q?=E5=88=AB=20(#2013)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 【功能新增】增强对PPT、DOC文件的OCR识别 * 【功能新增】增强对PPT、DOC文件的OCR识别 * Update mydocloader.py --------- Co-authored-by: zR <2448370773@qq.com> --- document_loaders/__init__.py | 4 +- document_loaders/mydocloader.py | 71 ++++++++++++++++++++++++++++++++ document_loaders/mypptloader.py | 59 ++++++++++++++++++++++++++ server/knowledge_base/utils.py | 13 +++--- tests/samples/ocr_test.docx | Bin 0 -> 19122 bytes tests/samples/ocr_test.pptx | Bin 0 -> 43055 bytes 6 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 document_loaders/mydocloader.py create mode 100644 document_loaders/mypptloader.py create mode 100644 tests/samples/ocr_test.docx create mode 100644 tests/samples/ocr_test.pptx diff --git a/document_loaders/__init__.py b/document_loaders/__init__.py index a4d6b28d..88cfeae8 100644 --- a/document_loaders/__init__.py +++ b/document_loaders/__init__.py @@ -1,2 +1,4 @@ from .mypdfloader import RapidOCRPDFLoader -from .myimgloader import RapidOCRLoader \ No newline at end of file +from .myimgloader import RapidOCRLoader +from .mydocloader import RapidOCRDocLoader +from .mypptloader import RapidOCRPPTLoader diff --git a/document_loaders/mydocloader.py b/document_loaders/mydocloader.py new file mode 100644 index 00000000..7f5462a2 --- /dev/null +++ b/document_loaders/mydocloader.py @@ -0,0 +1,71 @@ +from langchain.document_loaders.unstructured import UnstructuredFileLoader +from typing import List +import tqdm + + +class RapidOCRDocLoader(UnstructuredFileLoader): + def _get_elements(self) -> List: + def doc2text(filepath): + from docx.table import _Cell, Table + from docx.oxml.table import CT_Tbl + from docx.oxml.text.paragraph import CT_P + from docx.text.paragraph import Paragraph + from docx import Document, ImagePart + from PIL import Image + from io import BytesIO + import numpy as np + from rapidocr_onnxruntime import RapidOCR + ocr = RapidOCR() + doc = Document(filepath) + resp = "" + + def iter_block_items(parent): + from docx.document import Document + if isinstance(parent, Document): + parent_elm = parent.element.body + elif isinstance(parent, _Cell): + parent_elm = parent._tc + else: + raise ValueError("RapidOCRDocLoader parse fail") + + for child in parent_elm.iterchildren(): + if isinstance(child, CT_P): + yield Paragraph(child, parent) + elif isinstance(child, CT_Tbl): + yield Table(child, parent) + + b_unit = tqdm.tqdm(total=len(doc.paragraphs)+len(doc.tables), + desc="RapidOCRDocLoader block index: 0") + for i, block in enumerate(iter_block_items(doc)): + b_unit.set_description( + "RapidOCRDocLoader block index: {}".format(i)) + b_unit.refresh() + if isinstance(block, Paragraph): + resp += block.text.strip() + "\n" + images = block._element.xpath('.//pic:pic') # 获取所有图片 + for image in images: + for img_id in image.xpath('.//a:blip/@r:embed'): # 获取图片id + part = doc.part.related_parts[img_id] # 根据图片id获取对应的图片 + if isinstance(part, ImagePart): + image = Image.open(BytesIO(part._blob)) + result, _ = ocr(np.array(image)) + if result: + ocr_result = [line[1] for line in result] + resp += "\n".join(ocr_result) + elif isinstance(block, Table): + for row in block.rows: + for cell in row.cells: + for paragraph in cell.paragraphs: + resp += paragraph.text.strip() + "\n" + b_unit.update(1) + return resp + + text = doc2text(self.file_path) + from unstructured.partition.text import partition_text + return partition_text(text=text, **self.unstructured_kwargs) + + +if __name__ == '__main__': + loader = RapidOCRDocLoader(file_path="../tests/samples/ocr_test.docx") + docs = loader.load() + print(docs) diff --git a/document_loaders/mypptloader.py b/document_loaders/mypptloader.py new file mode 100644 index 00000000..f14d0728 --- /dev/null +++ b/document_loaders/mypptloader.py @@ -0,0 +1,59 @@ +from langchain.document_loaders.unstructured import UnstructuredFileLoader +from typing import List +import tqdm + + +class RapidOCRPPTLoader(UnstructuredFileLoader): + def _get_elements(self) -> List: + def ppt2text(filepath): + from pptx import Presentation + from PIL import Image + import numpy as np + from io import BytesIO + from rapidocr_onnxruntime import RapidOCR + ocr = RapidOCR() + prs = Presentation(filepath) + resp = "" + + def extract_text(shape): + nonlocal resp + if shape.has_text_frame: + resp += shape.text.strip() + "\n" + if shape.has_table: + for row in shape.table.rows: + for cell in row.cells: + for paragraph in cell.text_frame.paragraphs: + resp += paragraph.text.strip() + "\n" + if shape.shape_type == 13: # 13 表示图片 + image = Image.open(BytesIO(shape.image.blob)) + result, _ = ocr(np.array(image)) + if result: + ocr_result = [line[1] for line in result] + resp += "\n".join(ocr_result) + elif shape.shape_type == 6: # 6 表示组合 + for child_shape in shape.shapes: + extract_text(child_shape) + + b_unit = tqdm.tqdm(total=len(prs.slides), + desc="RapidOCRPPTLoader slide index: 1") + # 遍历所有幻灯片 + for slide_number, slide in enumerate(prs.slides, start=1): + b_unit.set_description( + "RapidOCRPPTLoader slide index: {}".format(slide_number)) + b_unit.refresh() + sorted_shapes = sorted(slide.shapes, + key=lambda x: (x.top, x.left)) # 从上到下、从左到右遍历 + for shape in sorted_shapes: + extract_text(shape) + b_unit.update(1) + return resp + + text = ppt2text(self.file_path) + from unstructured.partition.text import partition_text + return partition_text(text=text, **self.unstructured_kwargs) + + +if __name__ == '__main__': + loader = RapidOCRPPTLoader(file_path="../tests/samples/ocr_test.pptx") + docs = loader.load() + print(docs) diff --git a/server/knowledge_base/utils.py b/server/knowledge_base/utils.py index 85d0f0c5..24e9b479 100644 --- a/server/knowledge_base/utils.py +++ b/server/knowledge_base/utils.py @@ -91,9 +91,14 @@ LOADER_DICT = {"UnstructuredHTMLLoader": ['.html'], "JSONLoader": [".json"], "JSONLinesLoader": [".jsonl"], "CSVLoader": [".csv"], - # "FilteredCSVLoader": [".csv"], # 需要自己指定,目前还没有支持 + # "FilteredCSVLoader": [".csv"], 如果使用自定义分割csv "RapidOCRPDFLoader": [".pdf"], + "RapidOCRDocLoader": ['.docx', '.doc'], + "RapidOCRPPTLoader": ['.ppt', '.pptx', ], "RapidOCRLoader": ['.png', '.jpg', '.jpeg', '.bmp'], + "UnstructuredFileLoader": ['.eml', '.msg', '.rst', + '.rtf', '.txt', '.xml', + '.epub', '.odt','.tsv'], "UnstructuredEmailLoader": ['.eml', '.msg'], "UnstructuredEPubLoader": ['.epub'], "UnstructuredExcelLoader": ['.xlsx', '.xls', '.xlsd'], @@ -109,7 +114,6 @@ LOADER_DICT = {"UnstructuredHTMLLoader": ['.html'], "UnstructuredXMLLoader": ['.xml'], "UnstructuredPowerPointLoader": ['.ppt', '.pptx'], "EverNoteLoader": ['.enex'], - "UnstructuredFileLoader": ['.txt'], } SUPPORTED_EXTS = [ext for sublist in LOADER_DICT.values() for ext in sublist] @@ -141,15 +145,14 @@ def get_LoaderClass(file_extension): if file_extension in extensions: return LoaderClass - -# 把一些向量化共用逻辑从KnowledgeFile抽取出来,等langchain支持内存文件的时候,可以将非磁盘文件向量化 def get_loader(loader_name: str, file_path: str, loader_kwargs: Dict = None): ''' 根据loader_name和文件路径或内容返回文档加载器。 ''' loader_kwargs = loader_kwargs or {} try: - if loader_name in ["RapidOCRPDFLoader", "RapidOCRLoader","FilteredCSVLoader"]: + if loader_name in ["RapidOCRPDFLoader", "RapidOCRLoader", "FilteredCSVLoader", + "RapidOCRDocLoader", "RapidOCRPPTLoader"]: document_loaders_module = importlib.import_module('document_loaders') else: document_loaders_module = importlib.import_module('langchain.document_loaders') diff --git a/tests/samples/ocr_test.docx b/tests/samples/ocr_test.docx new file mode 100644 index 0000000000000000000000000000000000000000..25039c5e312ce745d69b9ba985caef80c1be4cb0 GIT binary patch literal 19122 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 literal 0 HcmV?d00001 diff --git a/tests/samples/ocr_test.pptx b/tests/samples/ocr_test.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1d27f66f71521cf168939e1dcf036fb9fe4916ce GIT binary patch literal 43055 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