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

如何使用Borb通过正则匹配字体名称提取PDF文本?

使用Borb结合正则匹配字体提取PDF文本

核心思路是遍历PDF的每个页面,提取所有文本片段,通过正则表达式匹配片段的字体名称,筛选出符合条件的文本内容。

假设你已经有基础的Borb读取PDF的代码,下面是实现正则匹配字体的完整示例:

from borb.pdf import PDFDocument
from borb.pdf.canvas.layout.text.text_fragment import TextFragment
from borb.toolkit.text.simple_text_extraction import SimpleTextExtraction
import re

# 定义匹配字体的正则表达式(匹配以ABCD开头的字体名)
FONT_PATTERN = re.compile(r'^ABCD')

def extract_text_by_font_regex(pdf_path: str) -> str:
    extracted_text = []
    
    # 读取PDF文档
    with open(pdf_path, "rb") as f:
        doc = PDFDocument.loads(f)
    
    # 遍历每个页面
    for page in doc.get_pages():
        # 使用SimpleTextExtraction提取页面文本片段
        text_extractor = SimpleTextExtraction()
        page.apply_visitor(text_extractor)
        
        # 遍历每个文本片段
        for text_fragment in text_extractor.get_text_fragments():
            # 获取文本片段的字体名称
            font_name = text_fragment.get_font().get_font_name()
            
            # 用正则匹配字体名
            if FONT_PATTERN.match(font_name):
                extracted_text.append(text_fragment.get_text())
    
    # 拼接所有符合条件的文本
    return '\n'.join(extracted_text)

# 调用示例
if __name__ == "__main__":
    result = extract_text_by_font_regex("your_document.pdf")
    print(result)

关键部分说明

  • 正则表达式:r'^ABCD' 会匹配所有以ABCD开头的字体名称,比如ABCD-Font、ABCD-Bold-Font都能命中。如果需要更精确匹配(比如只匹配以ABCD开头且以Font结尾的),可以修改为r'^ABCD.*Font$'。
  • 获取字体名称:通过text_fragment.get_font().get_font_name()获取当前文本片段使用的字体名。
  • 文本收集:将所有匹配成功的文本片段内容拼接成最终结果。

如果你的基础代码是通过其他方式(比如自定义Visitor)实现的,只需要在获取到TextFragment后加入正则匹配的逻辑即可,核心逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:12:56