508

За какое время я прочту это?

Время — наш ценнейший ресурс, но мы часто забываем, что он, к сожалению, не бесконечный. А ты задумывался, сколько времени ты тратишь на чтение разных текстов: статей, журналов, книг и прочего? Давай попробуем это выяснить!

Время rtime, которое тебе нужно для прочтения, скажем статьи в интернете, вычислить несложно, нужно лишь поделить количество всех слов в тексте words на значение твоей средней скорости чтения wpm: $$rtime = \frac {words} {wpm}$$ А как же узнать свою скорость чтения? Да очень просто: берешь какой-нибудь небольшой текст (только учти, что сложный текст ты скорее всего будешь читать медленнее, чем текст с большим количеством знакомых тебе слов) и секундомер. Включаешь секундомер, читаешь текст, через минуту останавливаешь секундомер, считаешь сколько слов ты успел прочитать. Это количество и будет твоей скоростью чтения в минуту. Обычная скорость чтения на русском языке у взрослого человека составляет 180–230 слов в минуту (https://education.yandex.ru/journal/kak-bistro-chitat). Для надежности можешь повторить этот эксперимент несколько раз. Существует и другой способ — оценить скорость онлайн, например: https://skorochtenie.online/test. Для английского языка: https://thereadtime.com/reading-speed-test/, https://wpmtest.org/speed-reading-test/. Теперь, когда ты уже знаешь свою среднюю скорость чтения, ты легко сможешь вычислять необходимое время для чтения текстов. Подобные несложные расчеты можно выполнить с помощью калькулятора или в электронных таблицах, но, как мне кажется, интереснее сделать это на питоне (на языке программирования). Нет его на компьютере? Не расстраивайся! Его можно просто в браузере открыть https://www.online-python.com или загрузить в смартфон на андроиде https://www.qpython.org. Зная сколько слов в определенном тексте, найдем время:

import math

words = 120566
print(f'В тексте {words:_d} слов.')

wpm = 250
rtime = math.ceil(words / wpm)
hours = rtime // 60
minutes = rtime % 60
if hours == 0:
    print(f'Время, необходимое для прочтения текста {minutes} минут(ы).')
else:
    print(f'Время, необходимое для прочтения текста {hours} час(а, ов) и {minutes} минут(ы).')

Здесь и далее, время, для приятного и понятного восприятия, преобразуется в часы и минуты. Если количество слов в тексте тебе не известно, но у тебя есть текстовый файл, тогда можно поступить вот так:

import math

filename = 'my_favorite.txt'
with open(filename, 'r', encoding='utf-8') as f:
    text = f.read()

words = len(text.split())
print(f'В тексте {words:_d} слов.')

wpm = 250
rtime = math.ceil(words / wpm)
hours = rtime // 60
minutes = rtime % 60
if hours == 0:
    print(f'Время, необходимое для прочтения текста {minutes} минут(ы).')
else:
    print(f'Время, необходимое для прочтения текста {hours} час(а, ов) и {minutes} минут(ы).')

В линукс похожий результат ты также можешь получить использую awk. Следующий текст помести в файл и сохрани его с именем reading_time_calc.awk:

function ceil(x)
{
    return int(x) + (x > int(x))
}
{
    words += NF
}
END {
    printf "В тексте %d слов.\n", words
    wpm = 250;
    rtime = ceil(words / wpm);
    hours = int(rtime / 60);
    minutes = rtime % 60;
    if (hours == 0)
        printf "Время, необходимое для прочтения текста %d минут(ы).", minutes
    else
        printf "Время, необходимое для прочтения текста %d час(а, ов) и %d минут(ы).", hours, minutes;
    printf "\n"
}

Чтобы выполнить этот скрипт, просто набери в терминале:

awk -f reading_time_calc.awk my_favorite.txt

В бумажных журнале или книге можно подсчитать вручную количество слов в одной строке произвольной страницы, затем умножить на количество ее строк, и потом еще умножить на количество всех страниц:

Немного изменим наш код:

import math

words_in_line = 8
lines = 34
words_on_page = words_in_line * lines
pages = 382

words = words_on_page * pages
print(f'В тексте {words:_d} слов.')

wpm = 250
rtime = math.ceil(words / wpm)
hours = rtime // 60
minutes = rtime % 60
if hours == 0:
    print(f'Время, необходимое для прочтения текста {minutes} минут(ы).')
else:
    print(f'Время, необходимое для прочтения текста {hours} час(а, ов) и {minutes} минут(ы).')

А если тебе лень считать это вручную (пусть этим занимается машина — она ведь железная, а ты — нет), можно воспользоваться программой Tesseract OCR, предварительно установив ее на свой компьютер с виндовс (https://pypi.org/project/pytesseract/, https://github.com/tesseract-ocr/tesseract, https://codetoprosper.com/tesseract-ocr-for-windows). Ты можешь отсканировать произвольную страницу и с помощью данной программы распознать ее. Чтобы программа умела распознавать русские тексты, не забудь скачать с https://github.com/tesseract-ocr/tessdata файл rus.traineddata и положить его в папку tessdata. Вот код:

from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Tesseract-OCR\tesseract.exe'

file_name = 'in.jpg'

img = Image.open(file_name)
text = pytesseract.image_to_string(img, lang='rus').rstrip('\n\r\x0c')

with open('out.txt', 'w', encoding='utf-8') as f:
    f.write(text)

Если опять же у тебя линукс, чтобы установить Tesseract OCR выполни в терминале следующие команды:

sudo apt update
sudo apt install tesseract-ocr

Этого достаточно чтобы распознать текст на английском языке, но если наша цель — распознавание текстов на русском языке, то потребуется поставить еще один пакет:

sudo apt install tesseract-ocr-rus

Не хочешь устанавливать Tesseract OCR на компьютер? Можешь перейти на https://img2txt.com/ru, и проделать похожие действия в интернете. По правде говоря, качество распознавания не всегда получается удовлетворительным, поэтому тебе, возможно, придется немного поправить текст в полученном файле — убрать ненужные символы, переносы и т. п. После этого количество слов в файле можно подсчитать по ранее предложенному алгоритму с их считыванием из этого файла. Для журнала или книги просто умножь количество слов одной страницы на количество всех страниц:

import math

words_on_page = 275
pages = 382

words = words_on_page * pages
print(f'В тексте {words:_d} слов.')

wpm = 250
rtime = math.ceil(words / wpm)
hours = rtime // 60
minutes = rtime % 60
if hours == 0:
    print(f'Время, необходимое для прочтения текста {minutes} минут(ы).')
else:
    print(f'Время, необходимое для прочтения текста {hours} час(а, ов) и {minutes} минут(ы).')

Применяя эти нехитрые приемы, ты сможешь оценить время, которое потребуется тебе для прочтения любой статьи, журнала или книги. Но не стоит торопиться, читай вдумчиво. Кроме того, старайся всегда употреблять «свежую и качественно приготовленную пищу для ума», не трать свое драгоценное время на бесполезный «фастфуд».