Giter Site home page Giter Site logo

Сделать и включить в интерфейс обратный конвертер (текст-брайль) about angelinareader HOT 6 OPEN

ilyaovodov avatar ilyaovodov commented on June 3, 2024
Сделать и включить в интерфейс обратный конвертер (текст-брайль)

from angelinareader.

Comments (6)

Futyn-Maker avatar Futyn-Maker commented on June 3, 2024

Если будет необходимость, могу помочь с этим, а именно, со специфическими правилами Брайля.
Возможно, стоит воспользоваться уже готовыми решениями типа Liblouis и просто сделать интерфейс между сайтом и транслятором?

from angelinareader.

IlyaOvodov avatar IlyaOvodov commented on June 3, 2024

Спасибо! Именно LibLouis я и собирался использовать. Мне не удалось заставить его нормально переводить с брайля, но перевод в брайль там, вроде, работает. Так что вопрос чисто технический - подключить его к программе и встроить эту функцию в UI сайта. Если реализуете - будет здорово.

from angelinareader.

Futyn-Maker avatar Futyn-Maker commented on June 3, 2024

Здравствуйте!
К сожалению, пока не могу разобраться, как добавить это напрямую в ваш код, потому что раньше дело с серьёзными Python-проектами не имел, работая только по WEB-у (фронтенд). Поэтому пока просто опишу код, который, в принципе, можно использовать как функцию для перевода.

import louis
from textwrap import fill

def text2Braille(table, file, format='but', lineLength=0):
    tableList = ["en-us-brf.dis", table]
    out = ""
    lines = file.readlines()
    for line in lines:
        if format == 'brf':
            translation = louis.dotsToChar(tableList, louis.translateString(tableList, line, mode=louis.dotsIO|louis.ucBrl))
        else:
            translation = louis.translateString(tableList, line, mode=louis.dotsIO|louis.ucBrl)
        if lineLength != 0:
            translation = fill(translation, lineLength)
        out += translation
        if line != lines[-1]:
            out += "\n"
    file.close()
    return out

Здесь функция на вход получает файл, брайлевскую таблицу, формат выходного документа и длину брайлевской строки. Текст лучше переводить построчно, потому что иначе некоторые правила Liblouis не срабатывают (например, обработка прямой речи).
По формату: я думаю, что целесообразно предоставлять пользователям выбор. Брайлевский текст может быть представлен в виде брайлевских Unicode символов (but), либо в виде Braille ASCII (файлы .brf). Этот формат поддерживают многие брайлевские дисплеи и принтеры, хотя наибольшее распространение, конечно, он получил в западных странах.
Здесь я ввёл также параметр linelength, который позволяет отформатировать готовый брайлевский текст согласно определенной длине брайлевской строки (например, для маленьких брайлевских дисплеев или для вывода на бумагу). Возможно, стоит ввести какую-то более продвинутую систему и реализовать расстановку переносов, но этим я пока не занимался.

Для литературного (шеститочечного брайля) в последней версии Liblouis существуют две таблицы, они называются "ru-litbrl.ctb" и "ru-litbrl-detailed.utb". Отличие в том, что в "detailed" проставляются все признаки заглавных букв, в другой - только при смене алфавита, примерно как в учебниках. Это так же имеет смысл оставить на выбор пользователя.

Возможно, позже смогу сам добавить в код, но, наверное, у вас получится лучше и быстрее :)

Андрей

from angelinareader.

IlyaOvodov avatar IlyaOvodov commented on June 3, 2024

@Futyn-Maker, да, спасибо. При прямом переводе, действительно, самое сложное - добавить функцию в интерфейс, но и это не сложно. Интерфейс сейчас меняем, так что лучше делать, когда уже будет новый.
Вопрос: можете подсказать, есть ли готовые функции по формированию Braille ASCII ?

from angelinareader.

Futyn-Maker avatar Futyn-Maker commented on June 3, 2024

Вопрос: можете подсказать, есть ли готовые функции по формированию Braille ASCII ?

Я сначало делаю брайлевский Unicode, потом перевожу в Braille ASCII с помощью louis.dotsToChar(["en-us-brf.dis", text)
Таблица "en-us-brf.dis" как раз содержит соответствие символам ASCII точечных шаблонов.

from angelinareader.

Futyn-Maker avatar Futyn-Maker commented on June 3, 2024

На всякий случай, чуть подробнее о функциях
louis.translateString(tableList, line, mode=MODE) - переводит строку текста в Брайль. tableList - массив с таблицами Брайля, можно указать несколько, если текст, например, мультиязычный. Но я не рекомендую так делать без необходимости. Чтобы на выходе получался брайлевский Unicode, в аргументе mode должно быть louis.dotsIO|louis.ucBrl.
louis.dotsToChar(tableList, line) - переводит точечные символы в любое другое представление Брайля в компьютере. В своё время было изобретено много форматов для разных стран, но самый популярный - Braille ASCII. Чтобы переводить в Braille ASCII, в TableList здесь как раз нужна таблица "en-us-brf.dis"

from angelinareader.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.