اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

بسم الله الرحمن الرحيم

الاخوة الكرام

السلام عليكم ورحمة الله وبركاته

اعتقد ان مشكلة استيراد البيانات من ملف pdf وتخزين البيانات في جدول قد تعرض لها الكثير من المستخدمين

هذه المشكلة لها حل ببعض البرامج او بعض مواقع الانترنت تقوم بتحويل البيانات الى ملف اكسيل مثلا ثم تخزينها في جدول اكسيس

ولكن هل لأحد الاخوة تجربة في كتابة كود برمجي يمكن من خلاله تنفيذ هذه العملية

خاصة ان البرامج والمواقع لا تدعم اللغة العربية بنسبة 100%

لذلك ارجو ان يفيدنا احد الاخوة بتجربة ناجحة

ولكم الشكر

تحياتي

قام بنشر

وعليكم السلام 🙂 

 

في سنة 2009 كان لي تجربة مع برنامج https://www.abbyy.com/ والظاهر الآن اسمه https://pdf.abbyy.com/

كان الافضل (في اللغة الانجليزية) في تحويل الصور (صور الرسائل التي تم ادخالها في الكمبيوتر بالماسح الضوئي scanner ، او ملفات pdf التي تحتوي على صور) الى ملف وورد بصيغة كلمات يمكن التعديل عليها ،

ويمكن بنسخة Corporate ، ان يقوم البرنامج بالعمل تلقائيا ، وممكن ان يقوم الاكسس بإعطاء التعليمات ، وفي النهاية يكون عندك ملف txt وتأخذ بياناته الى جدول الاكسس.

 

للغة العربية ، وقتها كانت نسبة صحّة/دقة البيانات المأخوذة من الصور تساوي حوالي 30-50% ، ولا علم لي بها الآن 🙂 

 

جعفر

قام بنشر

جزاكم الله خيرا استاذي الفاضل

وفعلا جربت البرنامج المذكور ABBYY FineReader 15

ولكن كما ذكرت اللغة العربية ليست 100% كما انه يستهلك جميع موارد الجهاز بطريقة مخيفة

وكنت ارجو ان يكون لدى الاكسيس امكانية للتعامل مع ملفات pdf من حيث تخزين البيانات

وقد وجدت مع فيجوال دوت نت اداة Aspose.Pdf وللاسف هي تعمل في بيئة الدوت نت ولا تعمل مع اكسيس

هذه الاداة يمكن من خلالها تخزين البيانات من pdf الى datagrid ثم نسخ البيانات الى اي برنامج قواعد بيانات

وارجو ان يكون لدى الاكسيس امكانية للتعامل مع ملفات pdf باي اداة جتى لو كانت مدفوعه

تحياتي

قام بنشر

ملفات pdf نوعين:

- نوع النص ، ويمكن استخلاص النص عن طريق بعض البرامج الصغيرة بأوامر Command Line من الاكسس ، وقد جربت احد البرامج فأعطاني النص حسب الحقول في الملف (اي انها مبعثرة بدون مسميات الحقول) ،

- نوع الصور ، مثل الملفات اللي ينتجها السكانر ، ولإستيراد البيانات منها ، يجب تحويلها اولا الى نص عن طريق برامج OCR ، ولا توجد برامج صغيرة لعمل هذا للغة العربية 🙂 

 

للعلم ، انا كنت من ضمن فريق عمل Abbyy في تجربة استعمال برنامجها Fine Reader لتحويل الصور الى نص عن طريق OCR في بداية مشوارهم ، واذكر اني اقترحت عليهم بعض الملاحظات التي كان لها دور في عمل قفزة لعمل البرنامج (لا اتكلم برمجيا ، وإنما بملاحظاتي كوني اتحدث واكتب العربية) ، ولكني ولشدة ضغط العمل في اوقات معينة ، فلم استطع تلبية طلباتهم ، وتوقفت عنهم 🙂 

 

جعفر

  • Like 1
قام بنشر
منذ ساعه, jjafferr said:

نوع النص ، ويمكن استخلاص النص عن طريق بعض البرامج الصغيرة بأوامر Command Line من الاكسس ، وقد جربت احد البرامج فأعطاني النص حسب الحقول في الملف (اي انها مبعثرة بدون مسميات الحقول) ،

افيدنا بلطريقة الله يرضى عليك

منذ ساعه, jjafferr said:

للعلم ، انا كنت من ضمن فريق عمل Abbyy في تجربة استعمال برنامجها Fine Reader لتحويل الصور الى نص عن طريق OCR في بداية مشوارهم ، واذكر اني اقترحت عليهم بعض الملاحظات التي كان لها دور في عمل قفزة لعمل البرنامج (لا اتكلم برمجيا ، وإنما بملاحظاتي كوني اتحدث واكتب العربية) ، ولكني ولشدة ضغط العمل في اوقات معينة ، فلم استطع تلبية طلباتهم ، وتوقفت عنهم 🙂 

الله يسامحك ويغفر لك كان لنا يد عندهم لو ما زلت في الفريق

تحياتي

 

قام بنشر

السلام عليكم 🙂

 

هذا احد البرامج 🙂

 

الموقع http://www.xpdfreader.com/about.html

رابط التحميل : https://dl.xpdfreader.com/xpdf-tools-win-4.02.zip

رابط البرامج في ملف التنزيل http://www.xpdfreader.com/support.html

وتوجد في الملف اوامر كل برنامج منهم ، وهذه اوامر البرنامج pdftoText الذي تريد العمل عليه http://www.xpdfreader.com/pdftotext-man.html

 

تجربتي قبل ان اكتب هذه المشاركة :

استعملت احدى هذه الاوامر :

pdftotext -enc UTF-8 -table M.pdf M.csv

pdftotext -enc UTF-8 -table -nopgbrk M.pdf M.txt

 

Clipboard01.jpg.561b457a23a91b8d457b311f3460cca7.jpg

.

وبالاكسس يصبح (رجاء مراعاة اسماء مجلدات مكان البرنامج ، وملف pdf ، وملف النتيجة txt ) :

    Dim App_Name As String
    Dim Input_File As String
    Dim Output_File As String
    Dim Command_Line As String
    
    App_Name = Chr(34) & Application.CurrentProject.Path & "\Data\pdftotext.exe" & Chr(34)
    Input_File = Chr(34) & Application.CurrentProject.Path & "\pdf_Files\abc.pdf" & Chr(34)
    Output_File = Chr(34) & Application.CurrentProject.Path & "\txt_Files\myTxt_from_pdf.txt" & Chr(34)
    
    Command_Line = App_Name & " -enc UTF-8 -table -nopgbrk " & Input_File & " " & Output_File
    'Debug.Print Command_Line
    Shell_n_Wait Command_Line, vbHide

.

والوحدة النمطية Shell_n_Wait موجودة في البرنامج في هذا الرابط https://www.officena.net/ib/topic/90906-كارنيهات-باستخدام-باركود-ماتركس-qr-code/

 

ثم لما نستورد/نربط ملف txt او csv لآول مرة الى الاكسس ، يجب ان نخبره بأن بتنسيق وصيغة البيانات :

Clipboard02.jpg.c2cbe433cc100611c9e5e9e0970b57be.jpg

.

Clipboard03.jpg.281d1abebe11c72e5915d484ca7955be.jpg

.

Clipboard04.jpg.e6de87532545dc69e1410fa116fe25e2.jpg

.

ومثل ما اخبرتك في مشاركتي السابقة ، النتيجة لن تكون بالتنسيق الذي تريده ، فيجب عليك استعمال مجموعة من الاستعلامات في الاكسس ، لتفريق البيانات على الحقول الصحيحة 🙂 

 

جعفر

 

 

قام بنشر
20 ساعات مضت, محمد أبوعبدالله said:

الفكرة ببساطو ان لدي جداول pdf واريد تحويلها الى جداول من اي نوع  اكسيل او اكسيس المهم التحويل

والبيانات باللغة العربية

السلام عليكم و رحمة الله و بركاته

هل ممكن رفع احد جداول pdf 

انا حولت ملف pdf الى الاكسس  بطريقة نسخ بيانات من pdf الى جدول في حقل واحد ثم عملت الكود لتوزيع بيانات في حقول مناسبه, وهذا من نوع pdf نص كما قال اخ جعفر

و لكن واجهني مشكلة في بعض صفحات كان قيم حقلين او ثلاثة متلاصقة مع بعض  و ينسخه البرنامج في حقل واحد و لتغلب على تلك المشكلة اضطرت نسخ بيانات من جدول الاول صفحة صفحة و عند حدوث الخطاء يفتح برنامج اكسل و ينسخ فيه الصفحة و متابعة نسخ بعد تعديل تلك الصفحة يدوياً.

 

 

قام بنشر
3 ساعات مضت, jjafferr said:

السلام عليكم 🙂

وعليكم السلام ورحمة الله وبركاته

افلح وجهك اخي الحبيب

باقي مشكلتين ارجو ان يكون على يديك الحل فيهما

اولاً : مشكلة مع اللغة العربية في ال او لفظ الجلالة  واعتقد انها مرتبطة مع ocr

فمثلاً "عياد عطاا‬لله" تظهر "عياد عطاا‬"

"محمد عبدالله" تظهر "محمد عبدا"

ثانياً : كما تفضلت وذكرت

3 ساعات مضت, jjafferr said:

ومثل ما اخبرتك في مشاركتي السابقة ، النتيجة لن تكون بالتنسيق الذي تريده ، فيجب عليك استعمال مجموعة من الاستعلامات في الاكسس ، لتفريق البيانات على الحقول الصحيحة 🙂 

كيفية التغلب على هذه المشكلة

db1.rar

تحياتي

  • أفضل إجابة
قام بنشر

السلام عليكم 🙂

 

الخطوة الاولى وبالتفصيل هي تصفية البيانات :

 

.

وهذا الكود كاملا لبرنامجك ، وحفظ البيانات في الجدول:

Public Function Split_Names()

    Dim rst, rst2 As DAO.Recordset
    Dim x() As String: Dim x2() As String
    Dim i, j As Long
    Dim a As String
    

    Set rst = CurrentDb.OpenRecordset("Select * From MyTxt_from_pdf")
    Set rst2 = CurrentDb.OpenRecordset("Select * From tbl_Names")
    
'    Do Until rst.EOF
'        For i = 1 To Len(rst!Field1)
'            a = Mid(rst!Field1, i, 1)           'الحروف/الارقام/العلامات
'            a = a & "(" & AscW(a) & ")  "       'رقمها AscW
'            Debug.Print a
'        Next i
'    loop

    Do Until rst.EOF

        x = Split(rst!Field1, ChrW(8236) & ChrW(8236) & ChrW(32) & ChrW(32))    'Name + ID
        For i = LBound(x) To UBound(x)
            'Debug.Print x(i)
            
            x2 = Split(x(i), ChrW(8236) & ChrW(32) & ChrW(32))
            For j = LBound(x2) To UBound(x2)
                'Debug.Print x2(j)
                a = Replace(x2(j), ChrW(8234), "")
                a = Replace(a, ChrW(8235), "")
                a = Replace(a, ChrW(8236), "")
                a = Trim(a)
                               
                               
                'If j / 2 = Int(j / 2) Then
                If j = 0 Then
                    'even
                    rst2.AddNew
                    rst2!iName = a
                Else
                    'odd
                    'the numbers in Arabic are different (text) than those in English, so we have to get the value of the normal number
                    '0=1632, 1=1633, 2=1634, 3=1635, 4=1636, 5=1637, 6=1638, 7=1639, 8=1640, 9=1641 'Arabic Numbers
                    '0=48, 1=49, 2=50, 3=51, 4=52, 5=53, 6=54, 7=55, 8=56, 9=57 'ascii
                    'instead of using long if statements, lets make a formula: 0=48=1632-1584
                    
                    rst2!iID = ChrW(AscW(a) - 1584)
                    rst2.Update
                End If
                
                
                'Debug.Print a
            Next j
            
        Next i
            
        rst.MoveNext
    Loop
    
    rst.Close: Set rst = Nothing
    
End Function

.

اما البحث عن مشكلة مع اللغة العربية في ال او لفظ الجلالة ، فانا عملت وحدة نمطية تقوم بتغيير الاسم ، ولكن يتوجب عليك اضافة بقية الاسماء المقطوعة في الوحدة النمطية ، في المتغير arr :

Public Function Reconstruct_Allah_Name(N As String) As String

    Dim arr()
    Dim x   
    
    arr = Array("عطاا", "عبدا")
    
    For Each x In arr
    
        If InStr(N, x & " ") > 0 Then
            'there is a space after the missing name
            Reconstruct_Allah_Name = Replace(N, x, x & "لله")
            Exit Function
            
        ElseIf InStr(N, x) + Len(x) - 1 = Len(N) Then
            'the missing name is at the end of the line
            Reconstruct_Allah_Name = Replace(N, x, x & "لله")
            Exit Function
            
        Else
            Reconstruct_Allah_Name = N
        End If
        
    Next x
    
    
    
End Function

.

ثم يقوم استعلام التحديث qry_Reconstruct_Allah_Name بمناداة الوحدة النمطية اعلاه ، وتغيير الكلمات 🙂 

 

والعمل يتم بالنقر على الزر المشار اليه في الصورة ادناه ، في النموذج Form1 :

image.png.9bd905c23b686e5bcd9a068b228dcfed.png

.

جعفر

1251.db1.mdb.zip

  • Sad 1
قام بنشر

ابداع تعجز الكلمات عن وصفه وشكره

ولا املك الا ان ادعوا الله لك ان يهديك ويوفقك ويرزقك من حيث لا تحتسب وان يجعلك رفيق النبي صلى الله عليه وسلم في الجنة

وجزاك الله خيرا

دمت لاخيك

تحياتي

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information