python - 是否有任何 python 包可以很好地从 RTL 语言的 PDF 中提取文本?

标签 python pdf text-extraction text-alignment persian

我使用过著名的 Python 包来处理 PDF 文件,比如 PDFminer、PyMuPDF、PyPDF2 等等。但是他们都不能从 中编写的 PDF 文件中正确提取文本。从右到左的语言 (波斯语、阿拉伯语)。
例如:

import fitz
doc = fitz.open("*/path/to/file.pdf")
txt = doc.getPageText(0)
print(txt)
它返回如下内容:

...

اﯾﻨﺘﺮﻧﺖ و ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﻪ ﻣﺴﻠﻂ

ﻣﺴﻠﻂ ﻫﺎیزﺑﺎن

...


有时单词被颠倒了(第一个字符在最后)并且单词在句子中被交换,有时单词被正确写入。但它不知道如何处理波斯语中常用的零宽度非连接器 (نیم‌فاصله)。
我尝试了很多,但一无所获。提前感谢您的帮助。

最佳答案

我遇到了这个问题,我写了以下代码:

import sys
from builtins import print
import fitz

input_file = "p.pdf"
line_list = []

doc = fitz.Document(input_file)
page_count = doc.pageCount

for i in range(page_count):
    load_page = doc.loadPage(i)
    page = load_page.getText() # read a page
    page = str(page)
    line_list.append(page.splitlines()) # split every page based on \n

for j in range (len(line_list)):
    for k in range(3): 
        line_list[j][k] = line_list[j][k][::-1]
        print(line_list[j][k])
但是这个包有两个问题。 1)颠倒单词(例如“سلام”->“مالس”)我在这段代码中解决了它。 2) 多语言文档有问题,比如波斯语和英语。

关于python - 是否有任何 python 包可以很好地从 RTL 语言的 PDF 中提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511345/

相关文章:

java - 验证 (PDF/PKI) 签名的必要步骤

c++ - 如何从图像中检测文本区域?

python - 无法从 python 中的 div 标签读取文本

python - 使用 lxml 从 xml 中查找不同的节点和值

python - 无法成功执行以下脚本

java - 维护 Java 应用程序的多种形式的用户指南

python - 如何使用 odoo 9 中的 onchange 事件对 TreeView 行中的值求和

pdf - 如何在 C# 中打开 pdf 等文件 "from"一个 windows 窗体应用程序

pdf - PDF 如何存储文本

ocr - OCR 不再是问题吗?