You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已指定PDFJS.workerSrc仍报错,Langchain解析PDF分块求助

解决Langchain WebPDFLoader的"No PDFJS.workerSrc specified"错误

问题场景

尝试使用Langchain的RecursiveCharacterTextSplitter和WebPDFLoader解析上传的PDF并分割为文本块,代码如下:

import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';
import { WebPDFLoader } from 'langchain/document_loaders/web/pdf';
import * as pdfjs from 'pdfjs-dist';

///...code here handling file reading 

 const handleLoadPDF = async () => {
    if (uploadedFile) {
      const blob = new Blob([uploadedFile], { type: 'application/pdf' });
      const loader = new WebPDFLoader(blob, {
        pdfjs: () => import("pdfjs-dist/legacy/build/pdf.mjs"),
        workerSrc: `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`,
      });

      try {
        // Load the PDF document
        const pdfDocument = await loader.load();
        const textSplitter = new RecursiveCharacterTextSplitter({
          chunkSize: 1000, // Adjust the chunk size as needed
          chunkOverlap: 200, // Adjust the chunk overlap as needed
        });

        // Split the document into text chunks
        const splitDocs = await textSplitter.splitDocuments(pdfDocument);
        console.log({ splitDocs });

      } catch (error) {
        console.error('Error:', error);
        // Handle errors as needed
      }
    }
  };

运行后始终触发如下错误:

pdf-W4I3FICS.js?v=815f6208:48416 Uncaught (in promise) Error: No PDFJS.workerSrc specified
    at getWorkerSrc (pdf-W4I3FICS.js?v=815f6208:48416:23)
    at PDFWorker2.PDFWorker_initialize [as _initialize] (pdf-W4I3FICS.js?v=815f6208:48476:38)
    at new PDFWorker2 (pdf-W4I3FICS.js?v=815f6208:48454:22)
    at getDocument (pdf-W4I3FICS.js?v=815f6208:47858:72)
    at WebPDFLoader.load (langchain_document_loaders_web_pdf.js?v=815f6208:63:29)
    at async loadPDF (Input.jsx:88:18)

已尝试官方示例及相关问题中的代码,问题依旧。

解决方案

1. 全局配置pdfjs的workerSrc

WebPDFLoader的options中设置workerSrc可能无法被内部的pdfjs实例读取,改为全局设置:

import * as pdfjs from 'pdfjs-dist';
// 导入worker入口文件(可选,若使用本地worker)
import 'pdfjs-dist/legacy/build/pdf.worker.entry';

// 全局设置workerSrc,确保pdfjs实例能获取到
pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;

然后修改WebPDFLoader初始化代码,移除options中的workerSrc参数:

const loader = new WebPDFLoader(blob, {
  pdfjs: () => import("pdfjs-dist/legacy/build/pdf.mjs"),
});

2. 使用本地worker文件

若CDN加载不稳定,可将pdf.worker.js下载到项目静态资源目录,指定本地路径:

pdfjs.GlobalWorkerOptions.workerSrc = '/static/pdf.worker.js';

3. 确保版本完全匹配

检查package.json中pdfjs-dist的版本号,确保CDN链接的worker文件版本与本地依赖版本完全一致,避免版本不兼容导致的配置失效。

内容的提问来源于stack exchange,提问作者Artario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:01:28