Вы можете скачать tika-app-xxx.jar (последний) из Здесь .
Затем поместите этот .jar-файл в ту же папку вашего файла сценария python.
затем вставьте следующий код в скрипт:
import os
import os.path
tika_dir=os.path.join(os.path.dirname(__file__),'.jar')
def extract_pdf(source_pdf:str,target_txt:str):
os.system('java -jar '+tika_dir+' -t {} > {}'.format(source_pdf,target_txt))
меньше зависимости. Один файл .jar проще управлять пакетом python.
поддержка нескольких форматов. Позиция source_pdf
может быть каталогом любого документа. (.doc, .html, .odt и т. д.)
. tika-app.jar всегда выпускает ранее, чем соответствующая версия пакета tika python.
стабильный.
Необходим jre-headless.
Нет. В методе расширения вы можете сделать то же самое, что и в «обычном» статическом методе в некотором служебном классе.
Таким образом, этот метод расширения
public static void SomeMethod(this string s)
{
// do something with 's'
}
эквивалентен некоторому статическому вспомогательному методу, подобному этому (по крайней мере, в отношении того, к чему вы можете получить доступ) :
public static void SomeStringMethod(string s)
{
// do something with 's'
}
(Конечно, вы можете использовать отражение в любом методе для доступа к закрытым членам. Но я думаю, что не в этом суть вопроса.)
Если у вас есть класс, который вы расширяете, вы всегда объявляете его частичным, а затем расширяете класс & amp; иметь доступ ко всем закрытым членам в другом файле ... Но вы бы не использовали методы расширения.
Нет:
public class Foo
{
private string bar;
}
public static class FooExtensions
{
public static void Test(this Foo foo)
{
// Compile error here: Foo.bar is inaccessible due to its protection level
var bar = foo.bar;
}
}
Нет, если вы не предоставите какой-либо доступ к ним через общедоступные свойства или шаблон прокси.
Метод расширения - это, по сути, статический метод, поэтому все, к чему у вас есть доступ, - это открытые члены экземпляра, для которого вызывается метод расширения