From 0b5d1ebefa58037f554b870ef62db1d8972a8a63 Mon Sep 17 00:00:00 2001 From: Stephen Hu <812791840@qq.com> Date: Mon, 29 Dec 2025 13:33:27 +0800 Subject: [PATCH] refactor: docling parser will close bytes io (#12280) ### What problem does this PR solve? docling parser will close bytes io ### Type of change - [x] Refactoring --- deepdoc/parser/docling_parser.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/deepdoc/parser/docling_parser.py b/deepdoc/parser/docling_parser.py index 965f82265..e8df1cfd4 100644 --- a/deepdoc/parser/docling_parser.py +++ b/deepdoc/parser/docling_parser.py @@ -78,14 +78,21 @@ class DoclingParser(RAGFlowPdfParser): def __images__(self, fnm, zoomin: int = 1, page_from=0, page_to=600, callback=None): self.page_from = page_from self.page_to = page_to + bytes_io = None try: - opener = pdfplumber.open(fnm) if isinstance(fnm, (str, PathLike)) else pdfplumber.open(BytesIO(fnm)) + if not isinstance(fnm, (str, PathLike)): + bytes_io = BytesIO(fnm) + + opener = pdfplumber.open(fnm) if isinstance(fnm, (str, PathLike)) else pdfplumber.open(bytes_io) with opener as pdf: pages = pdf.pages[page_from:page_to] self.page_images = [p.to_image(resolution=72 * zoomin, antialias=True).original for p in pages] except Exception as e: self.page_images = [] self.logger.exception(e) + finally: + if bytes_io: + bytes_io.close() def _make_line_tag(self,bbox: _BBox) -> str: if bbox is None: