那家做网站好买的网站模板会影响

张小明 2026/1/10 17:52:48
那家做网站好,买的网站模板会影响,微舍 微网站 怎么做,wordpress auto get rss1. 背景与动机 默认的 langchain_community.document_loaders.PyPDFLoader 虽然支持 extract_images 参数#xff0c;但在某些场景下#xff0c;它并不会自动将 OCR 识别后的文字合并到 page_content 中。为了确保能够百分之百提取出 PDF 页面中嵌入的图像文字#xff08;如…1. 背景与动机默认的langchain_community.document_loaders.PyPDFLoader虽然支持extract_images参数但在某些场景下它并不会自动将 OCR 识别后的文字合并到page_content中。为了确保能够百分之百提取出 PDF 页面中嵌入的图像文字如电路图标签、截图文字等我们采用了Mix-in (混合)模式在保留原生文本层提取能力的同时手动插入自定义的 OCR 处理流程。2. 核心技术栈pypdf: 用于底层的 PDF 页面解析和原始图片对象提取。rapidocr-onnxruntime: 核心 OCR 引擎。优势基于 ONNX Runtime运行速度快且不需要安装 Tesseract 等系统级组件完全通过 Python 包分发。Pillow (PIL): 用于处理从 PDF 中提取出的二进制图片数据。3. 逻辑流程图 (Mermaid)否是是否否是开始 load_file初始化 PyPDFLoader调用 loader.load 提取文本层extract_images True?合并文本 返回 Document进入 _enrich_with_ocr初始化 RapidOCR 引擎PdfReader 读取原始文件遍历请求的页面页面是否有图片?提取图片数据 BytesRapidOCR 执行识别将识别文字追加到 Page Content跳过所有页面处理完成?结束4. 代码深度讲解4.1load_file方法逻辑枢纽load_file是外部调用的主入口它负责协调文本提取和 OCR 增强。defload_file(self,source:str,**kwargs)-Document:# ... 略过参数获取和日志打印# 1. 初始化 LangChain 的 PyPDFLoaderloaderPyPDFLoader(file_pathsource,extract_imagesextract_images,# 告诉底层库我们要处理图像passwordpassword)# 2. 提取文本层 (Native Text Layer)# 这一步会利用 pypdf 提取 PDF 中原本就是文本的内容返回一个 List[Document]documentsloader.load()# 3. 页面过滤# 如果用户指定了特定页面如 pages[10]我们在这里进行筛选ifpages:filtered_docs[]forpage_numinpages:idxpage_num-1if0idxlen(documents):filtered_docs.append(documents[idx])documentsfiltered_docs# 4. 【关键步骤】OCR 文本增强# 如果 extract_images 为 True则进入我们自定义的 OCR 流程ifextract_images:self._enrich_with_ocr(documents,source,pages)# 5. 内容合并# 将处理后的各页内容用 --- Page Break --- 标记拼接成一个完整的字符串combined_content\n\n--- Page Break ---\n\n.join(doc.page_contentfordocindocuments)# 6. 返回结果# 返回一个包含完整文本和元数据的 Document 对象returnDocument(page_contentcombined_content,metadatametadata)4.2_enrich_with_ocr方法技术核心该方法负责底层的图像提取和 OCR 识别。A. 引擎延迟加载try:fromrapidocr_onnxruntimeimportRapidOCR ocr_engineRapidOCR()exceptImportError:# 如果没装包优雅降级打印警告logger.warning(rapidocr-onnxruntime not installed. Skipping OCR for images.)return讲解我们没有在文件顶部全局导入 RapidOCR而是放在方法内部。这样如果用户不需要 OCR 功能就不必承担加载庞大 OCR 模型的时间和内存开销。B. 页面索引映射readerpypdf.PdfReader(source)# 使用原生 pypdf 读取# 如果指定了 [1, 3] 页doc_page_indices 会变成 [0, 2]ifrequested_pages:doc_page_indices[p-1forpinrequested_pages]else:doc_page_indiceslist(range(len(documents)))讲解这是一个坑点。documents列表的长度取决于你加载了多少页。如果只加载了第 10 页documents长度就是 1索引是 0。但我们需要告诉pypdf去读取原文件的第 9 个索引。这段逻辑保证了“索引对位”。C. 图片提取与 OCRfori,page_idxinenumerate(doc_page_indices):pagereader.pages[page_idx]imagespage.images# 获取页面所有图片对象ocr_texts[]forimageinimages:# image.data 直接拿到图片的 Bytes 数据result,_ocr_engine(image.data)ifresult:# RapidOCR 返回结果格式[[[box], text, score], ...]# 我们通过列表推导式 line[1] 拿到纯文字部分text\n.join([line[1]forlineinresult])iftext.strip():# 包装识别出的文字打上标签ocr_texts.append(f[Image Text]:\n{text})讲解我们利用了pypdf6.x 版本的新特性可以直接通过page.images访问图片。image.data是内存中的字节流避免了 IO 读写临时文件的损耗。ocr_engine(image.data)是最核心的识别动作。D. 就地修改In-place Updateifocr_texts:# 将识别到的文字追加到对应 Document 对象的原有文本后面documents[i].page_content\n\n\n\n.join(ocr_texts)讲解这种设计模式不会创建新的 Document 对象而是直接修改传入的列表对象节省了内存空间。5. 完整代码参考以下是src/loaders/pdf_loader.py中关键方法的完整实现5.1load_file方法defload_file(self,source:str,**kwargs)-Document:try:extract_imageskwargs.get(extract_images,False)pageskwargs.get(pages,None)passwordkwargs.get(password,None)logger.info(fLoading PDF:{source})loaderPyPDFLoader(file_pathsource,extract_imagesextract_images,passwordpassword)documentsloader.load()ifnotdocuments:raiseValidationError(messagePDF is empty,error_codeEMPTY_PDF,sourcesource)ifpages:filtered_docs[]forpage_numinpages:idxpage_num-1if0idxlen(documents):filtered_docs.append(documents[idx])documentsfiltered_docsifextract_images:self._enrich_with_ocr(documents,source,pages)combined_content\n\n--- Page Break ---\n\n.join(doc.page_contentfordocindocuments)metadatadocuments[0].metadata.copy()ifdocumentselse{}metadata.update({source:source,file_type:pdf,total_pages:len(documents),file_size:Path(source).stat().st_size})returnDocument(page_contentcombined_content,metadatametadata)exceptExceptionase:raiseValidationError(messagestr(e),error_codePDF_LOAD_ERROR,sourcesource)frome6. 测试验证为了验证 OCR 功能我们编写了专门的测试用例来检查第 10 页包含产品框图的内容提取情况。6.1 测试代码 (test/loaders/test_pdf_loader.py)deftest_load_file_with_images(self,loader):Test loading file with image extraction enabled.PAGE_NUM10documentloader.load_file(PDF_PATH,extract_imagesTrue,pages[PAGE_NUM])assertlen(document.page_content)0print(f\n Page{PAGE_NUM}Content (Image Extraction Enabled) )print(document.page_content)6.2 测试输出结果2025-12-28 01:29:06.981 | DEBUG | src.loaders.pdf_loader:_enrich_with_ocr:162 - Added OCR text from 6 images to page 10 Page 10 Content (Image Extraction Enabled) | 1 - 产品介绍 图 1-1 昉·星光 2 产品框图顶部视图 ... (原生文本) ... [Image Text]: StarFive VisionFive 2 AE 888 ...7. 实现的优势零系统依赖完全通过 Python 包实现 OCR。强制增强弥补了PyPDFLoader默认对图片文字提取不力的问题。精准映射支持特定页面的 OCR 提取。8. 依赖说明 (requirements.txt)pypdf6.5.0 Pillow12.0.0 rapidocr-onnxruntime1.4.4
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设应用权限做网站原型的软件

知识演化推理中动态图Transformer的创新设计 关键词:知识演化推理、动态图、Transformer、创新设计、图神经网络 摘要:本文聚焦于知识演化推理中动态图Transformer的创新设计。首先介绍了知识演化推理及动态图的背景,阐述了研究的目的、范围和预期读者。接着详细讲解了核心概…

张小明 2026/1/7 0:57:01 网站建设

廊坊网站建设-商昊网络音乐播放网站怎么做

前言使用旧方法对滨城幼儿教育管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在滨城幼儿教育管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开…

张小明 2026/1/7 5:42:32 网站建设

公司网站建设比较好的公司北京装修公司前十强

ConvNeXt模型架构解析与工程实践指南 【免费下载链接】ConvNeXt Code release for ConvNeXt model 项目地址: https://gitcode.com/gh_mirrors/co/ConvNeXt ConvNeXt作为纯卷积神经网络架构,在计算机视觉领域重新定义了传统卷积网络的潜力。该模型通过精心设…

张小明 2026/1/10 1:29:00 网站建设

深圳网站设计公司设计网页设计与制作学什么

StyleGAN深度解析:从原理到实战的终极指南 【免费下载链接】stylegan StyleGAN - Official TensorFlow Implementation 项目地址: https://gitcode.com/gh_mirrors/st/stylegan 在当今AI生成内容爆发的时代,StyleGAN以其惊人的图像质量和灵活的控…

张小明 2026/1/7 5:42:28 网站建设

长春高档网站建设定制开发电商网站建设多少钱

在当今数据驱动的时代,高效可视化工具已成为各行业专业人士的必备技能。Mermaid Live Editor作为一款革命性的在线图表编辑器,让用户通过简单的代码语法就能制作出专业级图表,彻底告别复杂拖拽式设计软件的繁琐操作。 【免费下载链接】mermai…

张小明 2026/1/7 5:42:25 网站建设

服务器网站建设教程视频免费网站app下载汅api

终极DoubleQoL模组教程:快速提升《工业队长》游戏体验的完整指南 【免费下载链接】DoubleQoLMod-zh 项目地址: https://gitcode.com/gh_mirrors/do/DoubleQoLMod-zh 想要在《工业队长》游戏中获得10倍速游戏体验?DoubleQoL模组正是你需要的解决方…

张小明 2026/1/6 7:03:47 网站建设