-
Notifications
You must be signed in to change notification settings - Fork 21
dedoc_lib_rus
Если стоит задача написания проекта на python и необходимо разбирать документы без пересылки файлов через http, то можно использовать Dedoc в качестве библиотеки.
Проще всего посмотреть Dockerfile и установить соответствующие пакеты в своей OS (В частности, нужен Libreoffice для конвертации документов). Данные пакеты устанавливались для ОС Ubuntu, в других системах последовательность действий может отличаться.
virtualenv -p python3 .
source bin/activate
pip install -e git+https://github.com/ispras/dedoc@version_2021-02-18#egg=dedoc
Проверим, что установка прошла успешно:
python -c "from dedoc.utils import get_unique_name; print(get_unique_name('some.txt'))"
Должно отработать без ошибок и вывести что-то вроде 1613578571_895.txt
Если не нужно проводить полный анализ документа, а необходимо просто прочитать определённый файл, можно использовать один из ридеров.
Список ридеров можно посмотреть тут
Например, если необходимо прочитать файл в формате docx, можно использовать docx reader:
from dedoc.readers.docx_reader.docx_reader import DocxReader
reader = DocxReader()
document, _ = reader.read("/home/padre/ТЗ_медики.docx")
document.lines # document text
document.tables # document tables
Если необходимо использовать полную функциональность Дедка, может понадобиться менеджер.
Есть два конфига: config и manager_config
В config задаются различные параметры работы, в manager_config задаются инструменты, с помощью которых менеджер будет обрабатывать документы. Оба конфига представляют собой обычные python dict, можно использовать свои конфиги вместо них (желательно не удалять ключи из конфига).
Стандартные конфиги можно просто импортировать:
from dedoc.config import get_config
from dedoc.manager_config import get_manager_config
config = get_config()
manager_config = get_manager_config(config)
print(sorted(config.keys())) # Print is Optional (check that import succeeded)
print(sorted(manager_config.keys()))
Получается что-то вроде:
['api_port', 'import_path_init_api_args',...
['attachments_extractor', 'converter', ...
manager = DedocManager.from_config(config=config, manager_config=manager_config, version="1")
Разбор документа с помощью manager:
parsed_document = manager.parse_file(
file_path="path to docx",
parameters={"with_attachments": "True"},
)
Список параметров можно посмотреть в онлайн-документации.
Возвращается методом manager.parse_file
- metadata: DocumentMetadata (метаданные документа, зависят от типа, например, размер документа)
- content: Optional[DocumentContent] (содержимое документа, про него мы напишем подробнее. Для вложенных документов может быть None)
- version: Optional[str] (версия, которая передается в manager)
- warnings: List[str] (список проблем, возникших в процессе работы)
- attachments: Optional[List[ParsedDocument]] (список документов, вложенных в данный)
Структура разобранного документа эквивалентна структуре документа, описанного в online документации.