Amr Elmohamady
Amr Elmohamady

@Amr__Elmohamady

11 تغريدة 7 قراءة Apr 16, 2023
واحد عمل مشروع findthatmeme عشان الناس تقدر تدور الmemes بالtext اللي عليها وعشان يعمل كدة لازم يستخدم Optical character recognition (OCR) وده بيشتغل بالAI عشان يقرأ الكلام من علي الصور.
في open source solutions زي Tesseract بس مكنش قوي ويقدر يقرأ الصور المعقدة.
1/n
في حل الcloud OCR services بس مثلا في GCP الألف صورة ب1.5$.
لقي انه الiPhone في OCR قوي اصلا built-in في الموبايلات ومبني علي الiOS Vision framework وتقدر تستخدمه من الiOS app بتاعك.
كتب server بswift بيشتغل كiOS app وكان يقدر يعمل الOCR ببلاش لالاف من الصور في ثواني.
2/n
المرحلة اللي بعد كدة وهي الsearch علي الtext فجرب PostgreSQL full text search بس الsearch كان بطئ في scale الملايين من الصور.
قرر يستخدم ElasticSearch للsearch وساب postgres للحاجات العادية وشغل elasticsearch علي node واحدة بس فده خلاه يوفر كتير بس جه علي حساب الreliability.
3/n
كان بيعمل الsync بينهم بPGSync وده حل CDC بسيط مبني بpython بيستخدم الlogical replication منpostgres ويبعت الchanges علي redis queue وانت بتكون معرف الschema كJSON وهو بيعمل update لelasticsearch.
4/n
فلو حصل data loss لelasticsearch بما انه single node cluster يقدر يعمل rebuild للsearch index بسهولة.
في وقت كتابة المقال كان قادر يsearch 17 million memes on a shared Linode instance with only 6 cores and 16GB of RAM.
5/n
بعد كدة كان عايز يعمل نفس الكلام بس للvideo memes والGIFs فعمل microservice بتستخدم ffmpeg عشان تاخد الفيديو تقسمه لعشر صور ويبعتهم للOCR server وبعد كدة يجمع الresults مع بعضها.
6/n
كانت المشكلة دلوقتي في السرعة عشان الفيديوهات معناها 10x الشغل فعمل upgrade من iPhone واحد لiPhone cluster زي في الصورة كدة.
7/n
ومكانش الموضوع مكلف اوي لانه كان بيجيب الiPhones المستعملة والقديمة لانهم كلهم فيم الIOS vision framework ومكانش مهتم مثلا لو الشاشة فيها خدوش فمكنش بيجيب جرابات ولا سكرينز وكان بيجيب الiphones اللي معمولها IMEI ban او locked لunpopular wireless networks فكان ممكن يوصل ل40$.
8/n
وكان عنده Raspberry Pi نزل عليها Nginx واستخدمها كload balancer للiPhones Cluster وكان في مروحة للcooling.
حتة من عندي انا شايف انه كان ممكن يعمل peer-to-peer load balancing (او ما يعرف بclient side load balancing) اسهل واسرع.
9/n
جدير بالذكر ان اللي عامل الكلام ده يشتغل في الsecurity كRedTeam في snapchat واشتغل في Uber وGoogle.
By @IAmMandatory
Image Stacks and iPhone Racks - Building an Internet Scale Meme Search Engine
findthatmeme.com
@AlaaAttya
لو تقولنا رأيك في PGSync كحل للCDC في الscalability بيستخدم queue مش stream؟
github.com

جاري تحميل الاقتراحات...