在遍历大量文件时,很难为不同的文件类型指定非标准的 method
参数。例如,目前 method
用于 PDF 文件,engine
用于音频文件:
for filename in dir:
txt = textract.process(filename, method='tesseract', engine='sphinx' )
print(txt)
我个人喜欢始终为 textract.process
函数提供一个 method
参数的简单性,但如果我们给用户提供了在处理文件之前测试文件扩展名的能力,他们就可以轻松地处理 PDF 文件和音频文件等。我在想这样的实现:
for filename in filenames:
ext = textract.get_extension(filename)
if ext == 'pdf':
kwargs = {'method': 'tesseract'}
elif ext.is_audio:
kwargs = {'method': 'sphinx'}
txt = textract.process(filename, **kwargs)
print(txt)
另一种方法是将 method
参数也接受一个字典:
methods = {
'pdf': 'tesseract',
'audio': 'sphinx',
}
for filename in filenames:
txt = textract.process(filename, method=methods)
print(txt)
7条答案
按热度按时间dxpyg8gm1#
另一个问题是考虑如何在命令行上处理这个问题...
nsc4cvqm2#
将它变成逗号分隔的列表怎么样?每个具有多个提取方法的函数都需要处理分割,但这可以解决CLI问题。
我猜想CLI要求不同方法之间不能有空格。
我也喜欢其他提出的建议,但不确定它们如何与CLI一起工作。获取扩展名的想法很好!
t2a7ltrp3#
以下是一些关于命令行界面(CLI)的想法。可能还有其他的想法(如果你有的话,请分享!),但我认为我稍微偏爱配置文件的方法。这给textract提供了同时指定许多kwargs的选项。然后,我们不仅可以使用
method
重载kwarg,还可以使用配置对象覆盖默认值。欢迎大家提供想法和反馈!这绝对是UI的重大变化,应该为
2.0.0
带来重大版本更新,所以我想确保我们做对了。带连字符的命令行参数
用冒号分隔的命令行值
json格式的命令行值
配置文件
bmp9r5qi4#
我喜欢配置文件选项,比必须形成有效的json更好!其他两个选项的冒号或连字符都是好的,但我认为配置文件更有可能在未来具有更好的兼容性。
a8jjtwal5#
感谢@barrust的输入
INI格式?YAML?
我想我对YAML有一点偏好,但我欢迎其他人的观点。
如果我有时间,我可能会在周五飞回芝加哥的路上尝试模拟这个。听起来很有趣:)
jmo0nnb36#
我倾向于使用INI格式,这样人们就可以将其设置到他们项目中的
setup.cfg
。我也认为我们可以同时解决#96问题,这将非常好。zpqajqem7#
这是一段很长的时间,但目前这对大家来说是有效的: