I have pdf files that are using Almohanad font (found here). I'm using Python's Tika to extract the text in these pdfs. The extraction works fine. For some characters, however, the result gets messed up. To elaborate more, these are the characters that are composed from two Arabic characters concatenated to each others (e.g. في result in to be يف and لم result in to be مل)
I check the cmap (ToUnicode) of all characters and it seems to be correct:
'0628': 'ب',
'062A': 'ت',
'062B': 'ث',
'062C': 'ج',
'062D': 'ح',
'062E': 'خ',
'0633': 'س',
'0634': 'ش',
'0637': 'ط',
'0638': 'ظ',
'0639': 'ع',
'063A': 'غ',
'0641': 'ف',
'0642': 'ق',
'0643': 'ك',
'0644': 'ل',
'0645': 'م',
'0641064A': 'في',
'0646': 'ن',
'0647': 'ه',
'064A': 'ي',
'0626': 'ئ',
'062A062C': 'تج',
'0646062C': 'نج',
'062A062D': 'تح',
'0644062C': 'لج',
'0644062D': 'لح',
'0644062E': 'لخ',
'06440645': 'لم',
'062A0645': 'تم',
'064A0645': 'يم',
'06460645': 'نم',
'06280645': 'بم',
'06450645': 'مم',
'06440645062D': 'لمح',
- this is part of it
So not sure why these characters get flipped. This is a sample from the pdf files mentioned above.
And the Tika's extraction code:
import requests
import codecs
from tika import parser
from_path = "./doc.pdf"
to_path = "./doc.txt"
rawText = parser.from_file(from_path)
rawList = rawText['content'].splitlines()
with open(to_path,'w') as f:
for line in rawList:
f.write(line)
f.close()
EDIT 1:
My pdf is actually readable using Tika, the only issue is the flipped characters. See a sample from the output:
وبعــض الشــركات وقــد قــررت كليــة املذكــورة الشــركة علــى احلكــم أطلــب لــذا ذكرتــه مــا التقنيــة بإبدالــي ســيارة نفــس النــوع مــن ذلــك النــوع مــن نفــس املوديــل وإذا تعــذر توجيــه ميــن االســتظهار للمدعــى عليــه على أن العيــب املذكور يف دعواه لــم يكــن بســبب ســوء اســتخدامه فــأدى اليمــن طبــق مــا طلــب منــه - قضــت احملكمــة بإلــزام الشــركة املدعــى عليهــا أن تســلم املدعــي ثمــن الســيارة وصرفــت النظــر عمــا يطالــب بــه املدعــي زيــادة علــى ذلــك- قنــع املدعــي باحلكــم وعارضــت عليــه املدعــى عليهــا - قــررت محكمــة االســتئناف املصادقــة علــى احلكــم .29ذلــك إلزامهــم بإعــادة القيمــة وقيمتهــا قدرهــا مائــة وثمانــون ألــف ريــال هــذه دعــواي وبســؤال املدعــى عليــه أجــاب بقولــه أطلــب مهلــة لإلجابــة مفصلة يف اجللســة القادمة. ويف جلســة أخرى يوم األحد 1432/4/29هـ افتتحــت اجللســة لــدى فضيلــة الشــيخ )....( وفيهــا حضــر املدعــي وحضــر حلضــوره)....( ســعودي بالســجل املدنــي رقــم )....( الوكيــل الشــرعي مــن الصــادرة الوكالــة للســيارات احملــدودة مبوجــب )....( لشــركة الثانيــة برقــم 29151 يف 1427/5/14هـــ جلــد كتابــة عــدل الدمــام 5765 وبســؤال املدعــى عليــه وكالــة عــن جوابــه علــى الدعــوى قــال: أطلــب إمهالــي للجــواب عنــا لدعــوى ورفعــت اجللســة. ويف جلســة أخــرى يــوم االثنــن 1432/6/20هـــ افتتحــت اجللســة وفيهــا حضــر )....( وحضــر )....( عــن الشــرعي الوكيــل )....( رقــم مدنــي ســجل )....( حلضــوره املديريــن مجلــس رئيــس نائــب بصفتــه عــن)....( الشــرعي الوكيــل ــة ــة واملرافعــة واملدافع ــه حــق اإلجاب ــة ل لشــركة )....( للســيارات املخولواإلقــرار واإلنــكار الصــادرة مــن كتابــة عــدل الدمــام الثانيــة رقــم 14416 يف 1432/03/24هـــ وبســؤاله عــن جوابــه عــن الدعــوى قــال: )....( شــركة مطبوعــات علــى محــررًا جوابــي لفضيلتكــم أقــدم ونــص 2011/05/23م املوافــق 1432/6/20هـــ بتاريــخ للســيارات املقصــود مــن الــرد أن مــا تضمنتــه الئحــة املدعــي بــأن الســيارة مــن نــوع )....( موديــل )....( بــأن بهــا خلــًا مصنعيــًا وأنــه كان ملتــزم بجميــع بزيــت اخلاصــة الدوريــة التغييــرات وكذلــك الدوريــة التشــييكات ــح ــر صحي ــأن مــا ذكــره املدعــي غي ــد فضيلتكــم ب احملــرك بهــذا نفيوأنــه يخالــف ويناقــض املســتندات )الفواتيــر( التــي تقــدم بهــا للمحكمــة والتــي تثبــت أن مــا ذكــره املدعــي غيــر صحيــح لــم يكــن منتظمــًا يف 30تغييــر الزيــت فاملدعــي قــدم خمســة فواتيــر أقدمهــا تاريخــًا هــو أول تغييــر للزيــت يف الســيارة منــذ اســتامها كان بتاريــخ 2006/10/31م وحينهــا كانــت الســيارة قــدم شــيت مســافة 16000 كيلــو متــرًا أي أنــه مت تغييــر الزيــت بعــد أن قطعــت الســيارة 7500كيلــو متــرًا والفاتــورة الســيارة كانــت وعندهــا 2007/4/21 بتاريــخ كانــت تليهــا التــي حســب البيانــات املســجلة علــى الفاتــورة قــد مشــيت مســافة 13984 ويف هــذا ياحــظ تناقــض واضــح بــن الفاتورتــن وســوف نناقشــها يف فقــرة ــة والفاتــورة التاليــة لهــا كانــت بتاريــخ 2008/1/13م وعندهــا منفصلكانــت الســيارة قــد قطعــت 30000 كيلــو متــرًا أي بعــد أن مشــيت الســيارة مســافة 14000 كيلــو متــرًا والفاتــورة األخيــرة كانــت بتاريــخ 2008/4/27موعندهــا كانــت الســيارة قــد قطعــت مســافة 47229 كيلومتــرًا أي بعــد أن قطعــت الســيارة بعــد آخــر تغييــر للزيــت مســافة 17229 كيلومتــرًا فــا يخفــى علــى فضيلتكــم أن املدعــي كان غيــر ــر الزيــت حســب تعليمــات ــا تغيي منتظــٍم بقواعــد ســامة الســيارة ومنهالوكيــل فهــو كان يتجــاوز املســافة التــي يتوجــب عليهــا تغييــر الزيــت بأضعافهــا وأحيانــًا إلــى ثاثــة أضعــاف كمــا يف التغييــر األخيــر إن هــذه املعلومــات واحلقائــق والتناقضــات املأخــوذة مــن الفواتيــر التــي قدمهــا املدعــي بنفســه كبينــة لــه يجــب أن تنقلــب إلــى ضــده لتكــون بينــة عليــه لألســباب التاليــة: أ- عــدم التــزام املدعــي بالتعليمــات اخلاصــة بســامة محــرك الســيارة ومنهــا تغييــر الزيــت عنــد كل 5000كيلومتــر تقطعهــا الســيارة فكمــا أســلفنا أن الفواتيــر التــي قدمهــا املدعــي كبينــة علــى أنــه كان يقــوم بتغييــر زيــت محــرك الســيارة بانتظــام تثبــت أنــه كان يتجــاوز املســافة احملــددة إلــى أكثــر مــن ثاثــة أضعافهــا أحيانــا ب- إن 31أن تثبــت والتــي والثالثــة الثانيــة الفاتورتــن بــن املوجــود التضــارب الســيارة كانــت قــد قطعــت يف تاريــخ 2007/01/23ممســافة 16000 كيلومتــرًا بينمــا يف 2007/04/21م تناقصــت املســافة التــي قطعتهــا الســيارة إلــى 13984 فهــذا التناقــض العجيــب ليــس لــه تفســير ســوى أن املدعــي كان يتاعــب بعــداد الســيارة اخلاصــة باملســافة التــي تقطعهــا الســيارة إمــا إلخفــاء حقيقــة أنــه كان يتجــاوز املســافة التــي كانــت تقطعهــا الســيارة بــن كل تغييــر لزيــت احملــرك إلخفــاء جتــاوزه املســافة املســموح بهــا أو لزيــادة فتــرة الضمــان املمنوحــة لهــا بإنقــاص املســافة التــي قطعتهــا الســيارة وهــذا يجعلنــا نشــك يف مصداقيــة املدعــي ويلقــي بظــال كثيفــة علــى كل أقوالــه وادعاءاتــه يف الدعــوى األمــر الــذي يســتلزم علــى احملكمــة أن تضــع يف االعتبــار هــذه احلقائــق والتناقضــات عنــد احلكــم يف الدعــوى ولــكل مــا تقــدم نلتمــس مــن فضيلتكــم رد الدعــوى لعــدم صحــة ادعــاء املدعــي ولعــدم اســتنادها إلــى بينــات تثبــت صحــة دعــواه الوكيــل الشــرعي )....( توقيعــه وبــرد مــا جــاء يف املذكــرة
EDIT 2: An example to show what I meant by flipped and why this is an issue:
This is how the segment of text looks like in the PDF: enter image description here
The following is the correct text enclosed in the image: (copied from the pdf, and this is the result I want Tika to output)
الحمــد لله وحــده وبعــد لــدي أنــا (....) القاضي بالمحكمــة العامة بالدمام بنــاءً علــى مــا وردنــا مــن فضيلــة الرئيــس برقــم 808في 1431/01/25هـــ
- Here's Tika's output:
احلمــد هلل وحــده وبعــد لــدي أنــا )....( القاضي باحملكمــة العامة بالدمام بنــاًء علــى مــا وردنــا مــن فضيلــة الرئيــس برقــم 808يف 1431/01/25هـــ