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

指定Kalpurush字体提取孟加拉语PDF文本的工具推荐(多脚本支持)

解决Kalpurush字体孟加拉语PDF的文本提取问题

Python 方案

  • 使用pdfplumber结合自定义字体映射:
    pdfplumber支持加载本地字体并映射PDF中的嵌入字体,先准备好Kalpurush字体文件(如Kalpurush.ttf),再通过字体映射修正提取结果。示例代码:

    import pdfplumber
    
    def extract_bengali_text(pdf_path, font_path):
        with pdfplumber.open(pdf_path) as pdf:
            full_text = ""
            for page in pdf.pages:
                # 先通过page.fonts查看PDF中Kalpurush字体的实际名称,替换下方的键名
                font_mapping = {"Kalpurush": font_path}
                page_text = page.extract_text(font_mapping=font_mapping)
                full_text += page_text + "\n"
        return full_text
    
    # 调用示例
    result = extract_bengali_text("input.pdf", "./Kalpurush.ttf")
    with open("output.txt", "w", encoding="utf-8") as f:
        f.write(result)
    
  • 使用PyMuPDF(fitz):
    PyMuPDF对非拉丁字体的兼容性更强,可直接加载自定义字体辅助提取:

    import fitz
    
    def extract_with_pymupdf(pdf_path, font_path):
        doc = fitz.open(pdf_path)
        full_text = ""
        # 加载本地Kalpurush字体
        doc.set_font(font_path)
        for page in doc:
            full_text += page.get_text() + "\n"
        doc.close()
        return full_text
    
    # 调用示例
    result = extract_with_pymupdf("input.pdf", "./Kalpurush.ttf")
    with open("output_pymupdf.txt", "w", encoding="utf-8") as f:
        f.write(result)
    

Bash 方案

  • 使用mutool(MuPDF命令行工具):
    mutool支持映射PDF字体到本地文件,命令格式如下:

    mutool draw -F txt -o output.txt -U Kalpurush=./Kalpurush.ttf input.pdf
    

    其中-U参数用于指定字体映射规则,替换为你实际的字体路径即可。

  • 配置系统字体配合pdftotext:

    1. 将Kalpurush字体安装到系统字体库并更新缓存:
      sudo cp Kalpurush.ttf /usr/share/fonts/
      fc-cache -fv
      
    2. 再用pdftotext指定UTF-8编码提取:
      pdftotext -enc UTF-8 input.pdf output.txt
      

PHP 方案

  • 使用smalot/pdfparser库结合自定义字体加载:
    先通过Composer安装依赖:
    composer require smalot/pdfparser
    
    编写提取脚本:
    <?php
    require 'vendor/autoload.php';
    
    $parser = new \Smalot\PdfParser\Parser();
    $pdf = $parser->parseFile('input.pdf');
    
    // 遍历PDF字体,匹配Kalpurush并加载本地字体
    $fonts = $pdf->getFonts();
    foreach ($fonts as $font) {
        if (str_contains($font->getName(), 'Kalpurush')) {
            $font->setFilePath('./Kalpurush.ttf');
        }
    }
    
    $text = $pdf->getText();
    file_put_contents('output.txt', $text);
    ?>
    

JavaScript (Node.js) 方案

  • 使用pdf-parse结合fontkit处理字体:
    先安装依赖:
    npm install pdf-parse fontkit
    
    编写提取脚本:
    const fs = require('fs');
    const pdfParse = require('pdf-parse');
    const fontkit = require('fontkit');
    
    async function extractBengaliText(pdfPath, fontPath) {
        const dataBuffer = fs.readFileSync(pdfPath);
        const kalpurushFont = fontkit.openSync(fontPath);
    
        const options = {
            fontCallback: (fontData) => {
                if (fontData.name.includes('Kalpurush')) {
                    return kalpurushFont;
                }
                return null;
            }
        };
    
        const parsedData = await pdfParse(dataBuffer, options);
        return parsedData.text;
    }
    
    // 调用示例
    extractBengaliText('input.pdf', './Kalpurush.ttf')
        .then(text => fs.writeFileSync('output.txt', text, 'utf-8'))
        .catch(err => console.error(err));
    

内容的提问来源于stack exchange,提问作者Md. Atiqur Rahman Mazumder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:13:11