我使用过著名的 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/