Comments (6)
Если будет необходимость, могу помочь с этим, а именно, со специфическими правилами Брайля.
Возможно, стоит воспользоваться уже готовыми решениями типа Liblouis и просто сделать интерфейс между сайтом и транслятором?
from angelinareader.
Спасибо! Именно LibLouis я и собирался использовать. Мне не удалось заставить его нормально переводить с брайля, но перевод в брайль там, вроде, работает. Так что вопрос чисто технический - подключить его к программе и встроить эту функцию в UI сайта. Если реализуете - будет здорово.
from angelinareader.
Здравствуйте!
К сожалению, пока не могу разобраться, как добавить это напрямую в ваш код, потому что раньше дело с серьёзными 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.
@Futyn-Maker, да, спасибо. При прямом переводе, действительно, самое сложное - добавить функцию в интерфейс, но и это не сложно. Интерфейс сейчас меняем, так что лучше делать, когда уже будет новый.
Вопрос: можете подсказать, есть ли готовые функции по формированию Braille ASCII ?
from angelinareader.
Вопрос: можете подсказать, есть ли готовые функции по формированию Braille ASCII ?
Я сначало делаю брайлевский Unicode, потом перевожу в Braille ASCII с помощью louis.dotsToChar(["en-us-brf.dis", text)
Таблица "en-us-brf.dis" как раз содержит соответствие символам ASCII точечных шаблонов.
from angelinareader.
На всякий случай, чуть подробнее о функциях
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)
- Выделение букв в слове (3тчк и 6тчк) HOT 2
- Апостоф и ударение HOT 2
- 1 ми№ 6 с
- Исправить попадание писем с результатами в спам HOT 1
- Переход на эффективную архитектуру (EfficientDet) HOT 4
- Учет контекста символов
- Заменить тчк4 с ' на ` HOT 1
- Сделать отдельный режим для разметки из учебника русского языка (включение параметром)
- Учесть что грамматическая скобка очень редко бывает в математике
- Сделать примеры в столбик
- Сделать в интерфейсе проверку орфографии в распознанном тексте
- Сделать в интерфейсе справочник альтернативных значений символа
- Включить в справку раздел, что программа умеет, что нет
- Сделать узбекский латиницей
- Сохраняется битый файл all_users, потом сайт не открывается.
- Греческий алфавит HOT 10
- При расшифровке греческих символов в русском языке (и математике) использовать советскую греческую кодировку
- Can't download retina_chars_eced60.clr.008 HOT 1
- Problems with Liblouis
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from angelinareader.