Виявлення арабських віршів, що охоплюють кілька рядків


12

Мені потрібно створити додаток Корана, і я хочу прочитати вірші, коли користувач торкнеться його. Проблема, з якою я стикаюся, полягає в тому, що деякі вірші можуть розширюватися до півтора рядків (виділений червоним віршем) або просто вміщуватися в чверть рядка (виділений зелений вірш). Тож додавання кожного вірша до перегляду тексту чи якогось іншого виду не буде працювати.

Я хочу виявити такі вірші, як червоні, на другому зображенні. У мене є аудіофайли для віршів, тому не потрібно перетворювати текст у мовлення


1
Чи сторінка подається у вигляді зображень або відображається текст Unicode?

Текст до виступу .. Але тоді, будь ласка, покажіть нам свої дослідження.

Я намагався динамічно додавати зображення кожного вірша до перегляду зображень, але виникає проблема в тому, що подання зображення не буде розширюватися до такої половини рядка. Іноді для деяких віршів може знадобитися півтора рядка, сподіваюся, ти отримав те, що я мав на увазі. Мені потрібна певна пропозиція, щоб подолати це.

1
Використовуйте два рядки і просто мати накладні витрати?

1
Під півтора рядком ви маєте на увазі, що він займає ширину екрана, потім половину наступного рядка вниз?

Відповіді:


9

Це можна вирішити досить просто за допомогою простого узгодження шаблону. Я не знаю точно, як у вас це було налаштовано, тому я просто опишу алгоритм взагалі та використовую ілюстрації.

  • Зауважте, що номери віршів мають чітку межу, яку можна легко використовувати для виявлення початку та кінця вірша. Тому створіть для цього шаблону бінарний шаблон і збережіть його. Щось на зразок цього:

    введіть тут опис зображення

  • Оскільки кількість рядків на екрані відома заздалегідь (ви форматуєте сторінку) і кожен вірш має постійну висоту, ви можете легко (алгоритмічно) зробити висновок, де на екрані повинні бути координати Y для центральних ліній віршів . Це демонструє ідею:

    введіть тут опис зображення

  • Коли користувач торкнеться вірша, отримайте координати XY і переведіть координату Y до найближчого центру вірша.

  • Потім, починаючи з координати X, виконайте просту відповідність шаблону (перехресну кореляцію) у цьому рядку. Перша відповідність (пік у перехресній кореляції) у напрямку вперед (зліва), буде кінцевою точкою для вірша. Якщо у зворотному напрямку (праворуч) немає збігів, тоді рухайтесь вгору на один вірш (що ви можете зробити, оскільки ви знаєте координату Y середньої лінії) і повторіть. Перша відповідність з лівого кінця буде початковою точкою вірша. Аналогічно, якщо немає прямої відповідності на лінії, рухайтеся вниз по одній лінії та повторіть.

    Ось коротка ілюстрація ідеї. Жовте поле - це місце, де користувач торкається вірша. Потім ви зробите перехресну кореляцію зі своїм шаблоном, і сині кола будуть відповідністю.

    введіть тут опис зображення

    У цій відповіді я також використовую відповідність шаблонів , якщо вам цікаво бачити це в дії.

  • Визначивши початкову точку вірша, використовуйте розпізнавач тексту арабською мовою, щоб вивести номер вірша всередині цієї межі та відтворити відповідний аудіофайл.


Простіше рішення:

Більш просте рішення, якщо ви не хочете пройти це, - це зберегти координати XY віршованих початкових точок (будьте простими та використовуйте центральні точки), і як тільки ви отримаєте координати введення користувача, ви можете знову зробити оснащення його до центральної лінії, а потім піти назад, щоб побачити, з чого починається вірш. Це може мати перевагу - швидше.

Я не висував це як перше рішення, тому що ви, схоже, відкидали подібну думку в коментарях. Зрештою, це залежить від ваших обмежень - чи скоріше ви будете робити обчислювальну роботу (відповідність шаблону - що, до речі, також вимагає зберігання шаблону) або використання пам'яті (зберігання координат).

Якби я був ти, я, певно, пішов би з цим, але спробувати рішення для обробки зображень можна було б цікаво спробувати.


Йода чи хто-небудь інший, чи можете ви пояснити цю проблему трохи краще ?.Актично те, що я хочу знати, і я не отримую, це лише те, як і як приймати номери в синіх колах.?! Дуже дякую!

@xmenus Після того, як ви увійдете в коло (що ви робите за шаблоном, що відповідає різній межі), вам доведеться використовувати арабську бібліотеку розпізнавання тексту / номерів для ідентифікації вмісту всередині. Я не знаю арабської мови, тому не можу нічого рекомендувати. Ви можете спробувати попросити ОП ...
Лорем Іпсум

@xmenus Якщо вам потрібна допомога з арабською мовою, ви можете запитати мене, але з того, що ви запитуєте, чи просто ви хотіли виявити арабський номер, ви, мабуть, можете зробити такий же шаблон, що відповідає їм, як ви робите з колами.
Космічний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.