การตรวจจับข้อภาษาอาหรับที่ขยายหลายบรรทัด


12

ฉันต้องสร้างแอพคัมภีร์กุรอานและฉันต้องการอ่านข้อเมื่อผู้ใช้สัมผัส ปัญหาที่ฉันเผชิญคือบางข้ออาจขยายไปถึงหนึ่งและครึ่งบรรทัด (ข้อสีแดงเน้น) หรือเพียงแค่พอดีในหนึ่งในสี่ของบรรทัด (ข้อสีเขียวเน้น) ดังนั้นการเพิ่มแต่ละข้อใน textview หรือมุมมองอื่น ๆ จะไม่ทำงาน

ฉันต้องการตรวจจับข้อเช่นสีแดงในภาพที่สอง ฉันมีไฟล์เสียงสำหรับข้อดังนั้นไม่จำเป็นต้องแปลงข้อความเป็นคำพูด


1
หน้าได้รับข้อมูลรูปภาพหรือข้อความ Unicode ที่แสดงผลหรือไม่

ข้อความเป็นคำพูด .. แต่โปรดแสดงการวิจัยของคุณให้เราทราบ

ฉันได้ลองเพิ่มแต่ละโองการภาพลงใน imageview แบบไดนามิก แต่ปัญหาที่เกิดขึ้นคือมุมมองภาพที่ไม่ขยายไปหนึ่งบรรทัดครึ่งเช่นนั้น บางครั้งบางข้ออาจต้องใช้หนึ่งและครึ่งบรรทัดหวังว่าคุณจะได้สิ่งที่ฉันหมายถึง ฉันต้องการคำแนะนำเพื่อที่จะเอาชนะสิ่งนี้

1
ใช้สองบรรทัดและมีค่าใช้จ่ายบ้างไหม?

1
คุณหมายความว่ามันใช้ความกว้างของหน้าจอจากครึ่งหนึ่งของบรรทัดแล้วครึ่งหนึ่งของบรรทัดถัดลง

คำตอบ:


9

สิ่งนี้สามารถแก้ไขได้อย่างตรงไปตรงมาด้วยการจับคู่แม่แบบอย่างง่าย ฉันไม่รู้แน่ชัดว่าคุณตั้งค่าอย่างไรฉันจะอธิบายขั้นตอนวิธีโดยทั่วไปแล้วใช้ภาพประกอบ

  • สังเกตว่าหมายเลขกลอนมีเส้นขอบพิเศษที่สามารถใช้ตรวจจับจุดเริ่มต้นและจุดสิ้นสุดของข้อได้อย่างง่ายดาย ดังนั้นสร้างเทมเพลต binarized สำหรับรูปแบบนั้นและเก็บไว้ บางสิ่งเช่นนี้

    ป้อนคำอธิบายรูปภาพที่นี่

  • เนื่องจากจำนวนบรรทัดในหน้าจอเป็นที่รู้จักล่วงหน้า (คุณกำลังจัดรูปแบบหน้า) และแต่ละข้อมีความสูงคงที่คุณสามารถอนุมานได้อย่างง่ายดาย (อัลกอริทึม) ที่พิกัด Y สำหรับพิกัดกลางของข้อควรจะอยู่บนหน้าจอ . สิ่งนี้แสดงให้เห็นถึงความคิด:

    ป้อนคำอธิบายรูปภาพที่นี่

  • เมื่อผู้ใช้สัมผัสกับบทกวีให้รับพิกัด XY และถ่ายพิกัด Y ให้ตรงกับจุดร้อยกรองที่ใกล้ที่สุด

  • จากนั้นเริ่มต้นด้วยพิกัด X ดำเนินการจับคู่แม่แบบง่าย ๆ (ความสัมพันธ์ข้าม) ข้ามแถวนั้น การแข่งขันครั้งแรก (ยอดเขาสูงสุดในความสัมพันธ์ข้าม) ในทิศทางไปข้างหน้า (ทางซ้าย) จะเป็นจุดสิ้นสุดของบทกวี หากไม่มีการจับคู่ในทิศทางย้อนกลับ (ไปทางขวา) ให้เลื่อนขึ้นหนึ่งข้อ (ซึ่งคุณสามารถทำได้เพราะคุณรู้พิกัด Y ของเส้นกลาง) แล้วทำซ้ำ นัดแรกจากทางซ้ายจะเป็นจุดเริ่มต้นของข้อ ในทำนองเดียวกันหากไม่มีการแข่งขันไปข้างหน้าในบรรทัดเลื่อนลงหนึ่งบรรทัดและทำซ้ำ

    นี่เป็นภาพประกอบสั้น ๆ ของแนวคิด กล่องสีเหลืองเป็นที่ที่ผู้ใช้สัมผัสกับข้อ จากนั้นคุณทำการเชื่อมโยงข้ามกับแม่แบบของคุณและวงกลมสีน้ำเงินจะเป็นการจับคู่

    ป้อนคำอธิบายรูปภาพที่นี่

    ฉันยังใช้การจับคู่แม่แบบในคำตอบนี้หากคุณสนใจที่จะเห็นมันในการดำเนินการ

  • เมื่อคุณได้กำหนดจุดเริ่มต้นสำหรับข้อนั้นให้ใช้ตัวจำแนกข้อความภาษาอาหรับเพื่ออนุมานหมายเลขข้อในเส้นขอบนั้นแล้วเล่นไฟล์เสียงที่เกี่ยวข้อง


วิธีที่ง่ายกว่า:

วิธีแก้ปัญหาที่ง่ายกว่าถ้าคุณไม่ต้องการทำสิ่งนี้คือการเก็บพิกัด XY ของจุดเริ่มต้นของบทกวี (ให้มันง่ายและใช้จุดกึ่งกลาง) และเมื่อคุณได้รับพิกัดของการป้อนข้อมูลของผู้ใช้คุณสามารถ snap อีกครั้ง ไปที่กึ่งกลางแล้วเดินถอยหลังเพื่อดูว่าข้อใดเริ่มต้นขึ้น นี่อาจเป็นข้อได้เปรียบของการเป็นเร็วกว่า

ฉันไม่ได้นำหน้านี้เป็นวิธีแก้ปัญหาแรกเพราะคุณดูเหมือนจะปฏิเสธความคิดที่คล้ายกันในความคิดเห็น ในท้ายที่สุดมันขึ้นอยู่กับข้อ จำกัด ของคุณ - คุณอยากทำงานคอมพิวเตอร์มากขึ้นหรือไม่ (การจับคู่แม่แบบ - ซึ่งในทางกลับกันคุณต้องเก็บแม่แบบ) หรือใช้หน่วยความจำ (จัดเก็บพิกัด)

ถ้าฉันเป็นคุณฉันอาจจะไปกับอันนี้ แต่วิธีการประมวลผลภาพสามารถสนุกกับการลอง


คุณช่วยอธิบายเรื่องนี้ให้ดีขึ้นได้ไหมจริงๆแล้วสิ่งที่ฉันอยากรู้และไม่ได้เป็นเพียงวิธีหรือตัวเลขในวงกลมสีน้ำเงิน?! ขอบคุณมาก!

@xmenus เมื่อคุณล็อคในวงกลม (ซึ่งคุณทำโดยรูปแบบที่ตรงกับเส้นขอบที่โดดเด่น) คุณจะต้องใช้ไลบรารีการรับรู้ข้อความ / หมายเลขอาหรับเพื่อระบุเนื้อหาภายใน ฉันไม่รู้ภาษาอาหรับและไม่สามารถแนะนำอะไรได้เลย คุณอาจจะลองถามสหกรณ์ ...
Lorem Ipsum

@xmenus หากคุณต้องการความช่วยเหลือด้านภาษาอาหรับคุณสามารถถามฉันได้ แต่จากสิ่งที่คุณถามหากคุณต้องการตรวจสอบหมายเลขอารบิกคุณอาจทำแบบเดียวกันกับแม่แบบที่คุณทำกับแวดวง
Spacey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.