Fine-tuning GPT model for extracting fields from Hebrew invoices

Hello everyone,

I am currently working on fine-tuning a GPT model to extract specific fields from Hebrew invoices. To do this, I am using an OCR service to retrieve the invoice text and then passing it to the model along with a JSON file containing the expected valid fields as the result.

Although I have trained the model using 2000 examples, the results are not as accurate as I had hoped. However, I have discovered that the GPT-3.5-turbo model provides much more accurate results with just a simple prompt and one example.

I’m wondering if I’m doing something wrong with my approach or if I need to train the model using more examples to improve its accuracy. Can anyone offer any advice or suggestions? Any help would be greatly appreciated.

I used the open ai cli suggestions and added \n\n###\n\n to the end of each prompt (I added it also to my prompt when I tried to test it).
I added a " ", on the begining of each answer for better tokenization.

Example of my training data 1:

{"prompt":"דור אלון ניהול\nמתחחים קמעונאיים בע\"מ\n07:03\nנווה ירק\n054-5438081\n512869439 9.T\nע.מ מאוחר 557679420\n* * * חשבונית מס מקור ***\n000001 :n\"p\n22\/03\/2023\n013-0004\n****3027\nעסקה: 75503\nMAX ויזה\nתוקף:01\/27 מאושרת\nרכב: 06789330\n- פרטי הרכישה\nמוצר:בנזין 95 משאבה:04\nכמות: 38.777\nליטר\nש\"ח\/ליטר\nתעריף: 6.810\nסכום: 264.07\nסה\"כ: 264.07 ש\"\nללא מעמ: 225.70 ש\"ח\nמעמ38.37:17.0% ש\"ח\nסה\"כ: 264.07 ש\"ח\nתודה מדור אלון\nנסיעה בטוחה\n\n###\n\n",
"completion":" {\"doc_type\":\"חשבונית מס\",\"supplier_name\":\"דור אלון\",\"supplier_vat_number\":\"512869439\",\"invoice_date\":\"22-03-2023\",\"invoice_number\":\"475503\",\"invoice_currency\":\"ILS\",\"invoice_amount_including_vat\":\"264.07\",\"has_vat\":\"כן\"}"}

Example of my training data 2:

{"prompt":"חשבון לשירותי כביש 6 פטור מלא מניכוי מס במקור - הטופס זמין באתר האינטרנט\nwww.kvish6.co.il בעמוד \"טפסים לפתיחת מנוי\".\nחשבונית זו יכול שתכלול חיובים אשר נוצרו בתקופות חיוב קודמות ואשר\nלא חויבת בגינם בעבר.\nדרך ארץ הייווייז (1997) בע\"מ\nת\"ד 473 ראש העין 4810401\nבתיק איחוד עוסקים מספר 557972627 מדווחות דרך\nארץ הייווייז (1997( ב)\"9 512475203) ודרך ארץ\nהייווייז קטע 18 (2007) בע\"מ )ח\"9 513927285(\nלכבוד\nאסבן אברהם\nהמסילה 5 דירה 8\nפרדס חנה-כרכור\nמספר לקוח 3328834\n- חשבונית מס מספר 1232-167565\nתיאור )לפני מע\"מ(\nתיאור\nתשלומים עבור נסיעות\nסה\"כ סכומים ב-17% מע\"מ\nסה\"כ מעיימ\nסה\"כ כולל מע\"מ (ש”ח)\nלתשלום עד\n3712667\n20\/02\/2023\nפירוט חיובים לרכב\nמספר רכב\n1412131\nים\nהודעות\nחשבונית 1231220951 בסך 141.01 ש\"ח שולמה ב כרטיס אשראי אוטומטי ביום\nלחשבון שלא ישולם במועד, יתווספו חיובים והפרשי הצמדה על-פי חוק.\nלהגשת ערר על-פי חוק כביש אגרה )כביש ארצי לישראל) התשנ\"ה-1995,\nניתן לפנות בתוך 30 ימים, לוועדת ערר בטלפון 03-6255878\nטל\"ח\nמספר נסיעות\n4\nסכום\n76.60\n76.60\n13.02\n89.62\nעדכון\nפרטי מנוי\nאנא ידעו אותנו על\nלבירורים לגבי החשבונית\/תשלום באשראי\/דיווחי תנועה: 03-9081111 \/ 6116* שינוי בבעלות הרכב,\nאן כל שינוי אחר\nwww.kvish6.co.il\nלא לתשלום\nלתשלום חשבוניות\nולביצוע פעולות נוספות סירקו הברקוד\nסכום\n76.60\nאיזור אישי חדש!\nביצוע מגוון פעולות בחשבון האישי שלך\nבאופן קל ומיידי ללא המתנה לנציג\n6\n0\nכביש\nתמיד לפני כולם\nהעתק נאמן למקור\nהעתק ניתן לפי בקשת הלקוח.\nהמקור היווה חשבונית מס בהתאם לחוק.\nהעסקה לא בוטלה ןלא שונתה\nיהוי\/עוסק מורשה\nמספר לקוח\nסוג לקוח\nתאריך חשבון\nתקופת חשבון\n66026451\n3328831\nפרטי \/ מנוי פסקל\n20\/03\/2023\n20\/02\/23-19\/03\/23\nבפרטי המנוי, על מנת\nלמנוע המשך חיוב\nחשבונכם.\nהעברת הפסקל לרכב\nאחר עלולה לגרור\nחיובים כפולים\nמנויי פסקל הסרת\nמכשיר הפסקל מהרכב\nאינה מבטלת המנוי,\nלתאום ההסרה חייגו:\n*6116 IX 03-9081111\nwww.kvish6.co.il\nמסמך ממוחשב חתום\nדיגיטלית ומאושר\nע'יי גורם מאשר\nאבטחת מידע דרך ארץ\n\n###\n\n",
"completion":" {\"doc_type\":\"חשבונית מס\",\"supplier_name\":\"כביש 6\",\"supplier_vat_number\":\"513927285\",\"invoice_date\":\"20-03-2023\",\"invoice_number\":\"167565\",\"invoice_currency\":\"ILS\",\"invoice_amount_including_vat\":\"89.62\",\"has_vat\":\"כן\"}"}

Example of a result the fine tuned model on 2000 examples gives back:

סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לתשלום סה"כ לת

Thank you in advance!

Hey it looks as in your json objects aren’t in the correct format for fine tuning. Check the fine tuning docs and try using the system,user,assistant keys according to docs