Phát hiện các câu thơ tiếng Ả Rập trải dài trên nhiều dòng


12

Tôi cần xây dựng một ứng dụng Kinh Qur'an và tôi muốn đọc những câu thơ khi người dùng chạm vào nó. Vấn đề tôi gặp phải là một số câu thơ có thể mở rộng thành một và một nửa dòng (câu đỏ nổi bật) hoặc chỉ vừa với một phần tư dòng (câu thơ màu xanh lá cây nổi bật). Vì vậy, việc thêm từng câu vào textview hoặc một số khung nhìn khác sẽ không hoạt động.

Tôi muốn phát hiện những câu thơ như những câu màu đỏ trong hình ảnh thứ hai. Tôi có tệp âm thanh cho các câu thơ nên không cần chuyển văn bản thành giọng nói


1
Là trang được cung cấp dưới dạng dữ liệu hình ảnh hoặc hiển thị văn bản Unicode?

Nhắn tin cho bài phát biểu .. Nhưng sau đó, xin vui lòng cho chúng tôi xem nghiên cứu của bạn.

Tôi đã cố gắng thêm từng hình ảnh câu thơ vào chế độ xem hình ảnh một cách linh hoạt, nhưng vấn đề nảy sinh là chế độ xem hình ảnh sẽ không mở rộng thành một và một nửa dòng như thế. Đôi khi một số câu có thể yêu cầu một dòng và một nửa, Hy vọng bạn hiểu ý tôi. Tôi cần một số gợi ý để khắc phục điều này.

1
Sử dụng hai dòng và chỉ có một số chi phí?

1
Theo một dòng rưỡi, bạn có nghĩa là nó chiếm chiều rộng của màn hình, sau đó một nửa dòng tiếp theo xuống?

Câu trả lời:


9

Điều này có thể được giải quyết khá đơn giản với việc khớp mẫu đơn giản. Tôi không biết chính xác bạn đã thiết lập nó như thế nào, vì vậy tôi sẽ chỉ mô tả thuật toán nói chung và sử dụng các hình ảnh minh họa.

  • Quan sát rằng các số câu có một đường viền đặc biệt có thể dễ dàng được sử dụng để phát hiện bắt đầu và kết thúc của một câu. Vì vậy, tạo một mẫu nhị phân cho mẫu đó và lưu trữ nó. Một cái gì đó như thế này:

    nhập mô tả hình ảnh ở đây

  • Vì số lượng dòng trong một màn hình được biết trước (bạn đang định dạng trang) và mỗi câu có chiều cao không đổi, bạn có thể dễ dàng suy ra (theo thuật toán) trong đó tọa độ Y cho các đường trung tâm của câu thơ sẽ xuất hiện trên màn hình . Điều này thể hiện ý tưởng:

    nhập mô tả hình ảnh ở đây

  • Khi người dùng chạm vào một câu, hãy lấy tọa độ XY và đưa tọa độ Y đến trung tâm câu gần nhất.

  • Sau đó bắt đầu với tọa độ X, thực hiện khớp mẫu đơn giản (tương quan chéo) trên hàng đó. Trận đấu đầu tiên (đỉnh trong tương quan chéo) theo hướng chuyển tiếp (bên trái), sẽ là điểm kết thúc cho câu thơ. Nếu không có kết quả khớp theo hướng ngược lại (bên phải), sau đó di chuyển lên một câu (điều bạn có thể làm, vì bạn biết tọa độ Y của đường tâm) và lặp lại. Trận đấu đầu tiên từ đầu bên trái sẽ là điểm bắt đầu của câu thơ. Tương tự, nếu không có kết quả khớp phía trước trên dòng, di chuyển xuống một dòng và lặp lại.

    Đây là một minh họa ngắn về ý tưởng. Hộp màu vàng là nơi người dùng chạm vào câu thơ. Sau đó, bạn thực hiện tương quan chéo với mẫu của bạn và các vòng tròn màu xanh sẽ phù hợp.

    nhập mô tả hình ảnh ở đây

    Tôi cũng sử dụng so khớp mẫu trong câu trả lời này , nếu bạn muốn thấy nó hoạt động.

  • Khi bạn đã xác định điểm bắt đầu của câu thơ, sau đó sử dụng trình nhận dạng văn bản tiếng Ả Rập để suy ra số câu trong đường viền đó và phát tệp âm thanh tương ứng.


Giải pháp đơn giản hơn:

Một giải pháp đơn giản hơn, nếu bạn không muốn thực hiện điều này là lưu trữ tọa độ XY của các điểm bắt đầu câu (giữ cho nó đơn giản và sử dụng các điểm trung tâm) và khi bạn nhận được tọa độ của đầu vào của người dùng, bạn có thể chụp lại nó đến đường trung tâm và sau đó đi về phía sau để xem câu thơ bắt đầu từ đâu. Điều này có thể có lợi thế là nhanh hơn.

Tôi đã không đưa vấn đề này trở thành giải pháp đầu tiên bởi vì bạn dường như từ chối một ý tưởng tương tự trong các bình luận. Cuối cùng, nó phụ thuộc vào các ràng buộc của bạn - bạn muốn thực hiện công việc tính toán (khớp mẫu - bằng cách này, cũng yêu cầu bạn lưu trữ mẫu) hoặc sử dụng bộ nhớ (lưu trữ tọa độ).

Nếu tôi là bạn, có lẽ tôi sẽ dùng cái này, nhưng giải pháp xử lý ảnh có thể thú vị để thử.


yoda hoặc bất cứ ai khác, bạn có thể giải thích rõ hơn một chút về vấn đề này không?. Thực tế những gì tôi muốn biết và tôi không nhận được chỉ là làm thế nào hoặc làm thế nào để lấy số trong vòng tròn màu xanh.?! Cảm ơn rất nhiều!

@xmenus Khi bạn đã khóa trên vòng tròn (bạn thực hiện theo mẫu khớp với đường viền đặc biệt), bạn sẽ phải sử dụng thư viện nhận dạng văn bản / số Ả Rập để xác định nội dung bên trong. Tôi không biết tiếng Ả Rập và vì vậy không thể đề nghị bất cứ điều gì. Bạn có thể thử hỏi OP ...
Lorem Ipsum

@xmenus Nếu bạn cần trợ giúp với tiếng Ả Rập, bạn có thể hỏi tôi, nhưng từ những gì bạn đang hỏi nếu bạn chỉ muốn phát hiện một số Ả Rập, bạn có thể thực hiện cùng một mẫu phù hợp với họ như bạn đang làm với các vòng tròn.
Spacey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.