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

阿拉伯语PDF文本提取出现反向问题的技术求助

阿拉伯语PDF文本提取后顺序错乱的解决思路

问题核心

PyPDF2对从右到左(RTL)的阿拉伯语排版支持不足,提取时会打乱字符顺序,而单纯用arabic-reshaper、python-bidi或全局反转文本,会导致括号、标点等非阿拉伯语元素位置错误。

可行解决方法

1. 更换PDF提取工具

PyPDF2在RTL语言处理上表现较差,换成更专业的工具能直接解决大部分问题:

  • pdfplumber:对复杂排版的文本识别更精准,能更好保留阿拉伯语的原生顺序:
    import pdfplumber
    
    with pdfplumber.open("你的阿拉伯语PDF文件.pdf") as pdf:
        page = pdf.pages[0]
        extracted_text = page.extract_text()
        print(extracted_text)
    
  • PyMuPDF(fitz):多语言排版支持更优,提取的RTL文本顺序更符合预期:
    import fitz
    
    doc = fitz.open("你的阿拉伯语PDF文件.pdf")
    extracted_text = ""
    for page in doc:
        extracted_text += page.get_text()
    print(extracted_text)
    

2. 针对性修复已提取的错误文本

如果必须用PyPDF2的提取结果,可以只反转阿拉伯语字符子串,保留非阿拉伯语元素的位置:

import re

def fix_arabic_text(raw_text):
    # 匹配连续的阿拉伯语字符(Unicode范围U+0600-U+06FF)
    arabic_chars = re.compile(r'[\u0600-\u06FF]+')
    # 仅反转阿拉伯语字符序列,其他字符保持原样
    fixed_text = arabic_chars.sub(lambda match: match.group()[::-1], raw_text)
    return fixed_text

# 测试你的示例文本
sentence = "AR.(ةناشطع ♀) ناشطع نينكلو (ةعئاج تسل ♀) ،اعئاج تسل"
fixed_sentence = fix_arabic_text(sentence)
print(fixed_sentence)

3. 正确结合arabic-reshaper和python-bidi

先修复字符顺序,再用这两个工具处理字形和双向渲染:

import arabic_reshaper
from bidi.algorithm import get_display

# 先用上面的fix_arabic_text修复顺序
fixed_text = fix_arabic_text(sentence)
# 处理阿拉伯语连写等字形问题
reshaped_text = arabic_reshaper.reshape(fixed_text)
# 应用双向文本算法得到最终正确显示的文本
final_text = get_display(reshaped_text)
print(final_text)

4. 处理图像型PDF

如果PDF中的阿拉伯语文本是嵌入的图像,需要先做OCR识别:
用pytesseract结合pdf2image提取图像中的文本,记得安装阿拉伯语OCR语言包:

from pdf2image import convert_from_path
import pytesseract

# 转换PDF页面为图像
pages = convert_from_path("图像型阿拉伯语PDF.pdf")
extracted_text = ""
for page in pages:
    # 指定阿拉伯语语言包(需提前安装tesseract的ara语言包)
    extracted_text += pytesseract.image_to_string(page, lang='ara')
print(extracted_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:35:30