gpt4 book ai didi

python - 如何提取pdf文档的语言

转载 作者:行者123 更新时间:2023-11-30 23:24:12 25 4
gpt4 key购买 nike

我正在尝试提取任何通用 pdf 文档的语言并使用 python 将其设置在 CMS 中。我尝试使用/Lang 属性提取它,这里是代码示例:

pdfFileLang = findInDict('/Lang',pdfFile.resolvedObjects())



def findInDict(needle,indirectObjectDict):
""" Returns the PDF Language """
haystack = indirectObjectDict[0]
LOG('pypdfutils.py getPdfLanguage key haystack',INFO,str(haystack))
for key in haystack.keys():
LOG('pypdfutils.py getPdfLanguage key',INFO,str(key))
try:
value = haystack[key]
LOG('pypdfutils.py getPdfLanguage value',INFO,str(value))
if key == needle:
return value
else:
LOG('pypdfutils.py getPdfLanguage value1',INFO,str(value))
internalDict = value.keys()
LOG('pypdfutils.py getPdfLanguage key Dict',INFO,str(internalDict))
if type(value) == types.DictType:
internalDict = value.keys()
else:
LOG('pypdfutils.py getPdfLanguage value2',INFO,str(value))
for internalkey in internalDict.keys():
internalvalue = internalDict[internalkey]
LOG('pypdfutils.py getPdfLanguage key internalvalue',INFO,str(internalvalue))
if type(internalvalue) == types.DictType and internalvalue.has_key(needle):
return internalvalue[needle]
except Exception,e:
LOG('pypdfutils.py getPdfLanguage',INFO,str(e))
continue

但是当我查看日志时,我在字典中找不到这样的属性“/Lang”。

最佳答案

您似乎尝试在 PDF 文件中的所有词典中搜索“Lang”键。

要检查 PDF 文件中的语言信息,您需要检查目录中的“Lang”条目。然而,该条目的存在取决于用于创建 PDF 文件的 PDF 创建软件,大多数 PDF 文件没有该条目。

我不懂 Python 代码,但我相信您正在使用的 PDF 库将为您提供对预告片(词典)或目录(根)词典的访问。如果您有权访问预告片字典,请从字典中获取“根”值。这是对Catalog(Root)字典的间接引用。然后将此引用解析为 dict 以获取目录字典。从该目录字典中获取/Lang 值将为您提供该属性。

尝试以下

catalog = pdfFile.trailer['/Root'].getObject()
if has_key("/Lang"):
lang = catalog['/Lang'].getObject()

请注意,我不是 Python 程序员,上面的代码片段是我的第一个 Python 代码(我不确定它是否有效。:-)

请参阅 pypdf 引用 http://sourcecodebrowser.com/python-pypdf/1.10/classpy_pdf_1_1pdf_1_1_pdf_file_reader.html#a92be75503c895367083a846b3060e632

关于python - 如何提取pdf文档的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23558176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com