Создаем Searchable PDF с помощью Tesseract OCR

Недавно на работе столкнулись с задачей разпознавания сканированных документов и поиска по ним. Мною был рассмотрен движок распознавания текста с открытым исходным кодом Tesseract. В данной статье будут рассмотрены основные моменты возможной реализации. Предположим, что у нас есть многостраничный отсканированные документ в формате PDF, но нераспознанный. И наша задача распознать текст с помощью OCR (Optical
Читать далее…

Теги: , , ,

Транзакции в debug-режиме

Транзакции в Hibernate работают не всегда прозрачно. Если для отладки запросов в Hibernate мы используем show-sql: true в application.yml, то для включения логирования транзации нужно переключить уровень логирования на DEBUG для определенного класса. Следующая настройка для Hibernate 5 и системы логирования SLF4J. В файл logback-spring.xml (или logback.xml) добавьте следующую строку: <logger name="org.hibernate.engine.transaction.internal.TransactionImpl" level="DEBUG"/><logger name="org.hibernate.engine.transaction.internal.TransactionImpl" level="DEBUG"/>
Читать далее…

Во сколько раз Base64 увеличивает размер в байтах

Base64 — стандарт кодирования байтов при помощи только 64 символов (A-Z, a-z и 0-9 (62 знака) и 2 дополнительных символа, зависящих от системы реализации). Одним байтом можно закодировать 256 значений (28 бит), в то время как Base64 только 64 (26 бит). Из этого следует соотношение 28 + 28 + 28 = 26 + 26 +
Читать далее…

Теги: , , ,

Преобразование в сетевой порядок расположения байт (Java)

HtoN (Host to Net) — узловой порядок в сетевой. Функция htons преобразует узловой порядок расположения байтов в сетевой порядок расположения байтов. В short помещаются все возможные порты от 0 до 65535 (фактически от -32768 до 32767, т.к. в Java знаковый short): static short htons(short val) { return (short) ((val & 0xff) << 8 | (val
Читать далее…

Теги: ,

Замер времени bash-скриптом

Замерить выполнение какого-либо процесса можно из кода самого процесса, но иногда это не получается сделать. И на помощь приходит внешний замер времени с помощью bash-скрипта. Сперва запоминаем время запуска (в наносекундах), потом фиксируем время окончания (в наносекундах) и находим разность времени окончания и начала. Для перевода продолжительности из наносекунд в миллисекунды нужно разделить на один
Читать далее…

Удаление временно ненужных файлов

В очередной раз у разработчика закончилось место на жестком диске и начинается головоломка: «Что почистить?» В данной заметке предлагается почистить файлы сборок старых проектов. Ведь непонятно, когда понадобятся сборки и понадобятся ли вообще, а место они занимают много. Внимание все операции нужно делать с осторожностью, чтобы не удалить ничего лишнего! Рассмотрим очистку места на примере
Читать далее…

Hibernate Envers проблема с размером приращения последовательности

В проект трехлетней давности не получилось прикрутить Hibernate Envers, возникала ошибка при запуске приложения: Caused by: org.hibernate.MappingException: The increment size of the [hibernate_sequence] sequence is set to [1] in the entity mapping while the associated database sequence increment size is [50]. На том проекте Envers не сильно нужен был, поэтому обошлись без него. На новом
Читать далее…

Полное удаление метрик Prometheus

В один прекрасный день у нас на тестовом сервере поломался Prometheus, возможно, из-за частой смены времени на сервере (это нужно было для целей тестирования основной системы). Удалять метрики можно через API, но в моем случае это почему-то не помогло, поэтому пришлось применить радикальный способ. Способ заключается в удалении содержимого директории базы данных временных рядов /var/lib/prometheus/.
Читать далее…

Степени двойки

Список степени двойки. Степени двойки позволяют оценить алгоритмы, работающие за логарифмическое время. Степень двойки (2x) Значение 01 12 24 38 416 532 664 7128 8256 9512 101 024 112 048 124 096 138 192 1416 384 1532 768 1665 536 17131 072 18262 144 19524 288 201 048 576 212 097 152 224 194 304
Читать далее…

Резервное копирование в Vertica

В Vertica мы храним аналитические данные, которые в принципе можно не бэкапировать, т.к. объем данных — не велик, и можно перезалить в любой момент. Но это касается лишь новых данных, есть часть данных из старых источников: Oracle, Excel и текстовых документов, которые не желательно перезаливать. Лучше восстановить данные из бэкапа, чем собирать данные из старых
Читать далее…

Теги: , , ,