Food ingredients label reader for food allergy

Peeranut
3 min readJun 21, 2022

สวัสดีครับ ผม ปอนด์ ครับ จาก ผู้เข้ารวมงาน AI Builders ปี 2
บทความนี้จะเป็นการพูดที่มาและความสำคัญของ การพัฒนาโปรเจค Food ingredients label reader for food allergy ในงาน AI Builders a program for kids who want to build good AI ปี 2 !!!!!!

Go check it out!!1

Github Repo : https://github.com/ponmak/Food-ingredients-label-reader

Website for testing :

1.อ่านตัวหนังสือจากรูปไงอะะะ

เราจะอ่านตัวหนังสือจากรูปภาพได้ไงครับ นั้นสิครับ ใช่แล้วครับ!!! ใช้ตานั้นเอง
ล้อเล่นนะครับ วันนี้ ขอนำเสนอ key หลักของโปรเจคนี้นะครับ

OCR (Optical Character Recognition)
คือเทคโนโลยี การอ่านอักขระด้วยแสง โดนวิธีการใช้งานหลักคือการนำตัวเอกสารต่างที่มีตัวอักษร เช่น รูปภาพ หรือ PDF จากนั้นจะเข้าสู่กระบวนการแปลงตัวอักษรจากรูปภาพ ให้เป็น ตัวอักษร Character ในคอมพิวเตอร์

2.ทำไมต้องเอามาอ่านฉลากอาหารด้วยละ

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

3.OCR หลายเจ้า หลายสไตล์

เนื่องจาก OCR tool นั้นก็มีหลายเจ้านะครับทั้งโดนทาง mentor ของทีม Flawless Robots นะครับก็ได้แนะนำมาทั้งหมด 3 ตัวให้ทดสอบด้วยกันนะครับ

  1. Tesseract OCR
  2. Easy OCR
  3. Google Vision OCR

เลือกใช้อะไรน้าาาาา

ในการดวลของทั้งสาม tool นะครับผม เรื่อง เวลา ครับ
เนื่องจาก ถ้าเราจำลอง ว่า เราเดินในห้างเลือกซื้อของแล้วไปเจอคุกกี้สีแดงๆที่บอกแค่ชื่อแบรนด์ทำให้ต้องไปดูส่วนผสม เพราะว่าตัวเราแพ้สตรอเบอรี หากเรามายืนรอOCRประมวณผลนั้นคง ปวดขาหน้าดู ผมเลยเลือกเวลา ขอเพียงข้อความออกมาได้ครึ่งๆกลางก็พอ
โดน สรุปแล้วผมได้เลือก Google Vision OCR เนื่องจาก ใช้เวลาเพียง 0.299 sec
และยังให้ text ที่ตรงกับตัวรูปต้นฉบับมากกๆ

5.มาเตรียม Tools สำหรับการสร้างOCRกัน

  • Google Colaboratory เนื่องจากเราจะทำ model ใน Python 3
  • google cloud vision 2.7.3

8.ทำความเข้าใจ data กัน

รูปตัวอย่าง ส่วนเป็นฉลากที่นำมาใช้

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

7.Model ส่วนแรก

การทำ OCR จากตัว google cloud vision ไม่ยากเลยเนื่องจากตัวของgoogle vision นั้นเป็น pre-trained ทำให้เราสามารถตึงตัวของ API มาใช้ได้เลย

texts_data_gg_vision = []# get text using google vision aiemty_list = []def detect_text(path):“””Detects text in the file.”””client = vision.ImageAnnotatorClient()image = vision.Image(content=path)response = client.text_detection(image=image)texts = response.text_annotationsfor text in texts:text_des = ‘\n”{}”’.format(text.description)emty_list.append(text_des)output = emty_list[0]texts_data_gg_vision.append(output)return output

7.นำข้อมูลที่ได้มาใช้ประโยชน์

จากที่เห็นนะครับเราจะข้อมูลที่เป็น text จากฉลากมา ผมได้คิดต่อไปว่า เราให้ผู้ใช้กรอกสิ่งที่แพ้ลงไปเพื่อเอานำไปตรวจสอบว่าในสินค้านั้นมีส่วนผสมที่ไม่ได้บอกใน ข้อมูลสำหรับผู้แพ้อาหาร หรือ ไม่

8.Tokenize เพื่อนำไปทำ Similarity

เนื่องจากเราได้ข้อมูลจาก OCR แล้วแต่ข้อมูลที่ได้กลับเป็น string ติดกันยาว

จากภาพจะเห็นว่ามันเป็น string ตัวเดียว สิ่งที่เราต้องทำคือการตัดคำในstringนั้นออกมาเป็นหลายๆคำ ให้นำไปใช้ต่อในการหา Similarity
โดยสิที่ผมใช้คือ Python library สำหรับภาษาอย่าง PyThaiNLP โดยตัวของ PyThaiNLP นั้นมี functions tokenize ที่ใช้ในการตัดคำ โดนผมใช้แบบ newmm ในการตัดคำ

9.Cosine Similarity

https://www.learndatasci.com/glossary/cosine-similarity/

Cosine Similarity คือการวัดความเหมือนของ Vector 2 ว่าไปในทิศทางเดียวกันหรือไม่ โดยที่เป็นการตัดขนาด หรือ Magnitude ของ Vector ออกไป
โดยเราสามารถทำได้โดยการ นำคำแปลงเป็น vector หรือที่เรียกกันว่า Word2vec นั้นเอง และเนื่องจากเราใช้ PyThaiNLP มาตั้งแต่ต้นทำให้เรามามาใช้ functions Similarity จาก PyThaiNLP ได้อีกด้วย

10.ผลลัพท์ที่ได้จาก Cosine Similarity

ผมจาก Cosine Similarity ทำให้ได้ค่าความที่ความคล้ายกันดั่งภาพ

จากภาพจะเห็นว่า ทางด้านซ้าย คือ input ที่เราได้ให้ผู้ใช้งานกรอก ด้านขาวที่คำที่ได้จาก OCR ทำให้เราสามารถ checkสิ่งที่อยู่นอกเหนือคำที่อยุ่ใน ข้อมูลสำหรับผู้แพ้อาหารได้ และยังสามารถแสดงผลออกมาบอกให้ผู้ใช้ได้รับทราบอีกด้วย

11.สรุปส่งท้าย

ในปัจจุบันเรามีเทคโนโลยี ทางด้วย AI ค่อยช่วยเหลือเรามากมายทั้งทำให้สามารถทำ model ที่เกิดประโยชน์ เช่น การใช้ OCR เพื่ออ่านอ่านเอกสารราชการ หรือ การใช้ Cosine Similarity เพื่อหาว่า พิซซาหน้าใดใช้วัตถุดิบคล้ายๆกัน

ก่อนจากลาขอขอบคุณ พี่ เพื่อน ที่ค่อยช่วยเหลือใน ในงาน AI Builders ด้วยนะครับ
ลาไปก่อน สวัสดีครับบบบบบบ

Resource

--

--