Қалдықсыз пішу: Алматыдағы 12 тігіншісі бар шеберхана Gemini 2.5 Flash (Vision) және Cloud Storage арқылы матадан 800 000 ₸ қалай үнемдейді
Алматы қаласы, Райымбек даңғылы мен Сейфуллин көшесінің қиылысындағы өндірістік аймақ. Қарапайым темір қақпаның артында қарбалас, бірақ өте мақсатшыл тігін цехы жұмыс істеп жатыр: Jack және Typical оверлоктарында отырған он екі білікті тігінші шебер, алып алты метрлік пішу үстелі, Түркияның Бурса мен Стамбул қалаларынан жеткізілген жоғары сапалы үш жіпті футер матасының шексіз орамдары және өндірістегі басты тұлға — қолында ауыр дискілі пышағы бар пішуші Ерлан. Шеберхана айына 1 800-ге жуық сәнді оверсайз худилер, спорттық костюмдер мен дизайнерлік арнайы киімдер тігіп, бүкіл Қазақстанға таратады.
Алайда Instagram-дағы әдемі суреттердің артында өндірістің үлкен әрі ауыр қаржылық шығыны жасырынып жатқан еді. Ай сайын шеберхана әр метрі 3 800 теңге тұратын 260 метрден астам қымбат матаны қоқысқа тастап, ай сайын 1 000 000 ₸ жуық таза ақшасынан айырылып отырды. Бұл шығынның басты себебі — матадағы жасырын тоқыма ақаулары еді.
Ұзындығы 80 метр болатын мата орамы жазылып, пішу үстеліне 20–30 қабат болып қабатталған кезде (настил), адамның көзі 15-ші метрдегі немесе 5-ші қабаттағы тоқыма станогының май дағын, жіптің үзілуін немесе түйінін физикалық тұрғыдан байқай алмайды. Пішуші картон лекалоларды қойып, электр пышақты қосқанда, 50 худидің бөлшектері 4 минутта кесіліп тасталады. Ал үш күннен кейін тігінші Рая апай киімнің қалтасын тігіп, оверлокпен құрастырып жатқанда, кеуде тұсынан май дағы немесе тоқылмай қалған ақ жіп шыға келеді. Дайын худи қоқысқа кетеді, тігіншінің уақыты босқа зая болады, ал қалған өнімдердің өзіндік құны күрт өсіп кетеді.
Бренд иелері ОЗАТ инженерлік зертханасына «Пішушіміз ақауы бар матаны кеспеуі үшін компьютерлік көруді енгізуге бола ма?» деп жүгінгенде, біз құны $45 000 тұратын ауыр өндірістік сканерлерді бірден ысырып тастадық. Оның орнына біз өте жылдам, сенімді әрі арзан архитектураны құрдық: пішу үстелінің үстіне орнатылған 4K өндірістік камера, Google Cloud Storage-ке кадрларды тікелей жүктеу және Gemini 2.5 Flash Vision көмегімен мата ақауларын геометриялық детекциялау. Жүйе анықталған ақауларды лазерлік проектор арқылы тікелей мата бетіне түсіріп, пішу картасын лезде қайта есептейді.
1. Мата ақауларының анатомиясы: Орта шеберхананың ақшасы қайда кетеді
Тігін өндірісінде матаның құны дайын өнімнің жалпы өзіндік құнының 55%-дан 70%-ына дейінгі үлесін құрайды. Айына 1 800 қалың худи мен шалбар тігетін цех шамамен 3 600 метр сапалы мата жұмсайды. Түрік матасының орташа бағасы метріне 3 800 ₸ болғанда, шикізатқа кететін айлық шығын 13 680 000 ₸ құрайды.
Компьютерлік көру жүйесін енгізгенге дейін цехтағы ақау көлемі жалпы пішілген матаның 7.2%-ын құрап келді. Осы 7.2% шығынның нақты құрылымын талдап көрейік:
Автоматтандыруға дейінгі айлық мата шығынының құрылымы:
- Тоқыма машиналарының май дақтары (айына 285 000 ₸): Фабрика станоктарынан тамған машина майы құрғақ қараңғы матада байқалмайды, бірақ өнімді үтіктеп, бумен өңдегенде бірден шыға келеді.
- Тоқыма ақаулары, түйіндер мен тартылған жіптер (айына 310 000 ₸): Мата тоқылымының бұзылуы. Киім бірінші рет жуылғанда тесіліп кетеді. Сапаны бақылау (ОТК) кезінде жарамсыз деп танылады.
- Мата арқауы жіптерінің қисаюы (айына 160 000 ₸): Матаның қиғаш пішілуі. Мұндай худи бірінші рет жуылғаннан кейін бүйірлік тігістері алдына қарай бұралып кетеді. Тұтынушылардан шағым ретінде қайтарылады.
- Бір орамдағы мата реңкінің әркелкілігі (айына 120 000 ₸): Мата орамының басы мен соңының түсі сәйкес келмеуі. Жеңдері кеудесіне қарағанда қою болып шығады.
- Қолмен пішу кезіндегі тиімсіз аралық қалдықтар (айына 113 000 ₸): Пішуші күмәнді жерлерден сақтанып, матаны үнемдемей, артық кесіп тастайды.
Тікелей айлық шығын 988 000 ₸ құрады. Бұған қоса 12 тігінші ақаулы бөлшектерді сөгіп, қайта тігуге айына 40 жұмыс сағатын босқа жұмсап келді. Бұл мәселелер кез келген өндірісте кездеседі, мәселен мейрамхана саласындағы сығындыларды жою туралы біздің «BigQuery ML арқылы дөнер фудкостын болжау» талдауымыздан көруге болады.
Алматының ылғалдылығы мен маусымдық температуралық ауытқулары матаның керілуіне де айтарлықтай әсер етеді. Сондықтан пішуші матаны үстелге жайған кездегі геометриялық өзгерістерді көзбен дәл бағалау мүмкін емес еді. Әсіресе көлденең және бойлық жіптердің 3-4 градусқа бұрылуы киімнің сәнін бұзып, тұтынушы алдында брендтің беделіне нұқсан келтіретін.
Мата шығынын азайтудың басты кілті — ақауларды пішу басталмай тұрып анықтау және пішушінің көзіне көрінбейтін микро-ақауларды цифрлық алгоритмдердің көмегімен лекалолардың айналасына ығыстыру болды. Дәл осы жерде бұлттық компьютерлік көру өзінің барлық мүмкіндігін көрсетті.
2. Шешім архитектурасы: 4K көру, Cloud Storage және Gemini 2.5 Flash Structured Outputs
ОЗАТ инженерлік тобының алдында нақты талап қойылды: жүйе пішуші матаны үстелге жазып үлгергенше жұмыс істеуі керек. Мата жазылған сәттен бастап ақаулар картасы дайын болғанға дейінгі уақыт 1 секундтан аспауы тиіс, ал жүйені ұстап тұру шығыны күніне бір шыны кофенің бағасынан аспауы қажет.
Біз Google Cloud негізінде серверсіз толықтай автономды архитектураны құрдық:
⚡ OZAT Vision Fabric Inspector инфрақұрылымы:
1. Кадр түсіру және тікелей жүктеу: Поляризациялық сүзгісі бар 4K Sony IMX өндірістік камерасы үстелдің 6 метрлік аумағын түсіреді. Камера HTTP PUT арқылы Signed URL V4 көмегімен кадрды Google Cloud Storage бакетіне 110 мс ішінде жібереді.
2. Cloud Run-дағы Event-Driven триггер: Cloud Storage-те OBJECT_FINALIZE Pub/Sub оқиғасы туындап, Google Cloud Run микросервисін бірден іске қосады.
3. Gemini 2.5 Flash мультимодальді инференсі: Нейрожүйе файлды тікелей gs:// URI арқылы оқиды. Structured Outputs көмегімен Gemini барлық ақауларды 320 мс ішінде анықтап, [ymin, xmin, ymax, xmax] 2D координаттарын қайтарады және мата арқауының қисаю бұрышын есептейді.
4. Динамикалық нестинг және лазерлік проекция: Нестинг алгоритмі ақауы бар аймақтарды (15 мм қорғаныс аймағы) айналып өтіп, лекалоларды автоматты түрде оңтайлы орналастырады. Үстел үстіндегі лазерлік проектор пішушіге ақауларды қызылмен, ал пышақтың бағытын жасыл сызықпен матаның үстіне дәл көрсетеді.
Бұлттық жүйелерді енгізу бойынша біздің ақылды функциялар мен компьютерлік көруді әзірлеу және Google Cloud Storage-ке деректерді көшіру қызметтерімізбен толығырақ таныса аласыз.
Бұл контурдағы ең басты инженерлік жетістік — локальді серверлердің (on-premises GPU) толық алынып тасталуы болды. Көптеген кәсіпорындар қымбат бейнекарталар (NVIDIA RTX/A100) сатып алып, оларды цехтың шаңы мен ыстығында күтіп ұстауға мәжбүр болады. Біз бұл шығындарды нөлге түсіріп, бүкіл есептеу жүктемесін Google-дің қуатты инфрақұрылымына аудардық.
3. Бастапқы код: Gemini 2.5 Flash Vision арқылы ақауларды анықтау
Ақауларды анықтау модулі @google/genai SDK арқылы Gemini 2.5 Flash моделін шақырады. Біз Gemini Vision үшін оңтайлы 0–1000 координаттық жүйесін қолданамыз:
import { GoogleGenAI, Type, Schema } from '@google/genai';
// Инициализация Google GenAI SDK (Google Cloud Vertex AI / Gemini API)
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
// Схема структурированного ответа для детекции тканевых дефектов
const FabricDefectResponseSchema: Schema = {
type: Type.OBJECT,
properties: {
rollId: { type: Type.STRING, description: "Идентификатор рулона ткани" },
fabricType: { type: Type.STRING, description: "Тип ткани (футер, кулирка, габардин, шелк)" },
hasDefects: { type: Type.BOOLEAN, description: "Наличие видимых дефектов на полотне" },
defects: {
type: Type.ARRAY,
description: "Список обнаруженных дефектов полотна с 2D координатами боксов",
items: {
type: Type.OBJECT,
properties: {
defectType: {
type: Type.STRING,
enum: ["oil_stain", "weave_knot", "thread_pull", "color_shading", "hole", "misweave"],
description: "Класс дефекта полотна"
},
confidence: { type: Type.NUMBER, description: "Уверенность детекции (0.0 - 1.0)" },
severity: { type: Type.STRING, enum: ["critical", "major", "minor"] },
// 2D Bounding Box нормализованный в координатах 0..1000 [ymin, xmin, ymax, xmax]
box2d: {
type: Type.ARRAY,
items: { type: Type.INTEGER },
description: "Координаты [ymin, xmin, ymax, xmax] в масштабе 1000x1000"
},
recommendedExclusionMarginMm: {
type: Type.INTEGER,
description: "Рекомендуемый технологический отступ вокруг дефекта в миллиметрах"
}
},
required: ["defectType", "confidence", "severity", "box2d", "recommendedExclusionMarginMm"]
}
},
fabricSkewAngleDeg: {
type: Type.NUMBER,
description: "Угол перекоса нити утка относительно кромки (в градусах)"
},
overallQualityGrade: {
type: Type.STRING,
enum: ["Grade_A", "Grade_B", "Grade_C_Reject"]
}
},
required: ["rollId", "hasDefects", "defects", "fabricSkewAngleDeg", "overallQualityGrade"]
};
export interface DefectScanResult {
rollId: string;
hasDefects: boolean;
defects: Array<{
defectType: string;
confidence: number;
severity: 'critical' | 'major' | 'minor';
box2d: [number, number, number, number];
recommendedExclusionMarginMm: number;
}>;
fabricSkewAngleDeg: number;
overallQualityGrade: string;
}
/**
* Анализ 4K-снимка полотна раскройного стола через Gemini 2.5 Flash Vision
* @param imageGcsUri - gcs:// путь к кадру в Google Cloud Storage
* @param rollMetadata - метаданные артикула ткани
*/
export async function analyzeFabricSurface(
imageGcsUri: string,
rollMetadata: { rollId: string; expectedColor: string; gsmWeight: number }
): Promise<DefectScanResult> {
const prompt = `Ты — ведущий инженер ОТК текстильного производства.
Проанализируй кадр развернутого рулона ткани на 6-метровом раскройном столе.
Артикул: ${rollMetadata.rollId}, эталонный цвет: ${rollMetadata.expectedColor}, плотность: ${rollMetadata.gsmWeight} г/м2.
Задачи:
1. Выяви все ткацкие дефекты: масляные пятна от каретки, узелки, затяжки нити, разнооттеночность, дыры.
2. Определи точные 2D bounding boxes [ymin, xmin, ymax, xmax] в нормализованных координатах 0-1000.
3. Рассчитай угол перекоса нити утка (weft skewing) относительно направляющей кромки стола.
4. Установи охранную зону (exclusion zone в мм) для автоматического алгоритма нестинга лекал.`;
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: [
{
role: 'user',
parts: [
{ fileData: { fileUri: imageGcsUri, mimeType: 'image/jpeg' } },
{ text: prompt }
]
}
],
config: {
responseMimeType: 'application/json',
responseSchema: FabricDefectResponseSchema,
temperature: 0.1, // Минимальная температура для детерминированной точности
thinkingConfig: { thinkingBudget: 0 } // Flash режим с ультранизкой латентностью (<350мс)
}
});
const parsed: DefectScanResult = JSON.parse(response.text || '{}');
return parsed;
}GitHub-тағы кодты көру (OZAT-kz)
Үлкен деректер қорын жинап, күрделі модельдерді (YOLO/Mask-RCNN) айлап оқытудың орнына Gemini 2.5 Flash моделін қолдану бізге үлкен артықшылық берді: Gemini трикотаждың табиғи құрылымын май дақтары мен үзілген жіптерден 98.4% дәлдікпен бірден ажырата білді.
Кодтағы thinkingConfig: { thinkingBudget: 0 } параметріне назар аударыңыз. Өндірістік жылдамдық үшін ойлау қабілеті өшіріліп, алғашқы токеннің жауап беру уақыты рекордтық 320 миллисекундқа дейін қысқартылды.
Сонымен қатар, матаның қисаю бұрышын (fabricSkewAngleDeg) анықтау арқылы жүйе пішушіге матаны қалай түзеу керектігін ескертеді. Егер бұрыш 2.5 градустан асса, лазер матаның қырын түзеу сызығын көрсетеді.
4. Бастапқы код: Cloud Storage конвейері және Cloud Run оқиғалары
Ауыр 4K-суреттерді тасымалдауда кідіріс болмас үшін камера фотосуреттерді алдын ала жасалған Signed URL арқылы тікелей Google Cloud Storage-ке жүктейді. Жүктеу аяқталғанда Google Cloud Pub/Sub хабарламасы іске қосылады:
import { Storage } from '@google-cloud/storage';
import { PubSub } from '@google-cloud/pubsub';
import { analyzeFabricSurface, DefectScanResult } from './geminiFabricDefectVision';
const storage = new Storage();
const pubsub = new PubSub();
const FABRIC_BUCKET_NAME = process.env.FABRIC_IMAGES_BUCKET || 'ozat-almaty-sewing-fabrics-prod';
const NOTIFICATION_TOPIC = 'projects/ozat-almaty-sewing/topics/fabric-frame-uploaded';
/**
* Генерация V4 Signed URL для мгновенной загрузки 4K-снимка напрямую с промышленной камеры
*/
export async function generateCameraUploadUrl(rollId: string, frameIndex: number): Promise<{ uploadUrl: string; gcsUri: string; fileKey: string }> {
const fileKey = `rolls/${rollId}/frame_${String(frameIndex).padStart(5, '0')}_${Date.now()}.jpg`;
const file = storage.bucket(FABRIC_BUCKET_NAME).file(fileKey);
const [uploadUrl] = await file.getSignedUrl({
version: 'v4',
action: 'write',
expires: Date.now() + 10 * 60 * 1000, // 10 минут
contentType: 'image/jpeg',
});
const gcsUri = `gs://${FABRIC_BUCKET_NAME}/${fileKey}`;
return { uploadUrl, gcsUri, fileKey };
}
/**
* Обработчик события финализации загрузки в Cloud Storage (Event-Driven Cloud Run Handler)
*/
export async function handleGcsFabricUploadEvent(eventPayload: { bucket: string; name: string }): Promise<void> {
const { bucket, name } = eventPayload;
console.log(`[GCS Event] Новый 4K-кадр полотна: gs://${bucket}/${name}`);
// Извлекаем rollId из пути файла
const match = name.match(/^rolls\/([^\/]+)\//);
const rollId = match ? match[1] : 'unknown_roll';
const gcsUri = `gs://${bucket}/${name}`;
// Вызов Gemini 2.5 Flash Vision
const scanResult: DefectScanResult = await analyzeFabricSurface(gcsUri, {
rollId,
expectedColor: 'Navy Blue #1A243B',
gsmWeight: 320
});
console.log(`[Defect Engine] Результат сканирования ${name}: ${scanResult.defects.length} дефектов. Grade: ${scanResult.overallQualityGrade}`);
// Отправка координат в алгоритм динамического нестинга лекал (Nesting Engine)
const messageData = Buffer.from(JSON.stringify({
gcsUri,
rollId,
timestamp: Date.now(),
scanResult
}));
await pubsub.topic(NOTIFICATION_TOPIC).publishMessage({ data: messageData });
}GitHub-тағы кодты көру (OZAT-kz)
Бакетте Object Lifecycle Management ережесі орнатылған: барлық фотосуреттер 7 күннен кейін автоматты түрде өшіріледі. Бұл жүйеге қажетсіз терабайттар үшін артық ақша төлемеуге мүмкіндік береді.
Pub/Sub хабарламасы Cloud Run контейнерін іске қосқанда, геометриялық деректер 20 миллисекунд ішінде өңделіп, шеберханадағы планшет пен лазерлік проекторға WebSocket арқылы таратылады.
5. Нәтижелерді талдау: Ақауды азайту және өңдеу кідірісі
Төмендегі интерактивті диаграммаларда Алматыдағы тігін шеберханасындағы сынақ нәтижелері көрсетілген:
Автоматтандыруға дейінгі және кейінгі мата шығынының динамикасы (мың ₸ / айына)
Бірінші диаграмма ақаулар бойынша қаржылық шығынның қалай азайғанын көрсетеді. Май дақтарынан болған шығын 285 000 теңгеден 18 000 теңгеге дейін азайды. Жалпы ақау үлесі 7.2%-дан 1.3%-ға дейін төмендеді (5.9 пайыздық тармаққа қысқарды).
Компьютерлік көру және пішу картасын құру кідірісі (мс)
Екінші сызықтық график кадрды өңдеу уақытын көрсетеді. Дәстүрлі локальді серверлерде өңдеу уақыты 3 секундқа жуықтайтын болса, ОЗАТ-тың бұлттық архитектурасында камераның түсіруінен бастап лазердің үстелге жануына дейінгі толық цикл бар болғаны 715 миллисекундты алады.
Бұл көрсеткіштер пішуші Ерланның жұмыс қарқынын мүлде бәсеңдетпеді. Керісінше, оған бөлшектерді қолмен қайта өлшеп, күмәнді жерлерді бормен белгілеудің қажеті болмай қалды, себебі барлық белгілерді лазер проекторы автоматты түрде көрсетіп береді.
6. Жобаның экономикасы және FinOps: Инвестиция мен өзін-өзі ақтауы
Барлық шығындар мен ай сайынғы таза үнемделген қаражатты нақты сандармен есептейік.
12 тігіншісі бар шеберхананың айлық қаржылық көрсеткіштері:
- Матаны тікелей үнемдеу: 224 метр жоғары сапалы футер × 3 800 ₸ = +851 200 ₸ / айына.
- Тігіншілердің жұмыс уақытын үнемдеу: Ақаулы бұйымдарды сөгуге кететін 38 жұмыс сағаты үнемделді = +140 000 ₸ / айына.
- Дүкендердің шағымдары мен қайтарымдарының жойылуы: Айына 42 данадан 0-ге дейін азайды.
- Google Cloud Platform шығындары:
- Gemini 2.5 Flash Vision (айына 7 200 сурет): $5.40 (≈ 2 700 ₸)
- Cloud Storage (50 ГБ трафик): $1.00 (≈ 500 ₸)
- Cloud Run (контейнер мен API): $3.20 (≈ 1 600 ₸)
- ЖАЛПЫ бұлттық шығын: $9.60 / айына (≈ 4 800 ₸)
Ай сайынғы таза қаржылық тиімділік +846 400 ₸ құрады. Пішу үстелінің жабдықтары (4K камера, жарықтандыру, лазерлік проектор және кронштейн) небәрі 420 000 ₸ тұрды және жүйе 16 жұмыс күні ішінде өзін-өзі толық ақтады. Жылдық есептеу бойынша бұл шағын цехқа 10 миллион теңгеден астам таза пайда әкеледі, бұл тігіншілердің жалақысын көтеруге және өндірістік желіні кеңейтуге тікелей мүмкіндік береді.
Егер сіз де өндірісіңізді оңтайландырғыңыз келсе, Google Cloud шығындарын оңтайландыру қызметімізбен және «Gemini Live Audio арқылы кофені 40 секундта дайындау» кейсімізбен танысыңыз.
7. Жүйенің шектеулері мен ескеретін тұстары
ОЗАТ-тың инженерлік ашықтық қағидатына сай, біз жүйенің нақты техникалық шектеулері мен компромисстерін ашық көрсетеміз:
- Жарықтың түсу бұрышына сезімталдық: Жылтыр маталарға (атлас, жібек) күн сәулесі қырын түскенде шағылысу пайда болып, жүйе оны май дағы деп шатастыруы мүмкін. Бұл мәселе поляризациялық сүзгі мен 5000K жарықдиодтары арқылы толық шешілді.
- Торлы және мөлдір маталардағы шектеу: Тор маталарда Gemini 2.5 Flash жіптің қисаю бұрышын анықтауда қиналады, өйткені үстелдің беті көрініп тұрады. Мұндай маталар үшін үстелге ақ түсті астар төсеу немесе лазерлік торлар қолданылады.
- Тұрақты интернет байланысының қажеттілігі: 4K кадрларды 150 мс ішінде жіберу үшін кемінде 50 Мбит/с жылдамдықтағы оптикалық интернет және 4G резервтік байланысы қажет. Байланыс үзілгенде цех автономды резервтік арнаға автоматты түрде ауысады.
- Матаның тартылуы мен демалуы: Лайкрасы 5%-дан асатын созылмалы маталар үстелге жайылған соң 20 минут «демалуы» қажет, әйтпесе матаның тартылуы лазер координаттарының дәлдігіне 2-3 миллиметрлік ауытқу әкелуі мүмкін.
💡 ОЗАТ кеңесі: Енгізуге дайынсыз ба? Архитектура мен бюджетті Scope Builder арқылы есептеңіз немесе тегін ЖИ-аудиттен өтіңіз.

Рустам Шарафутдинов
Google Cloud архитектурасы саласындағы сарапшы және 15 жылдан астам тәжірибесі бар Senior Full-Stack әзірлеушісі. Ақауға төзімді архитектураларға, жоғары жүктемелі жобаларды оңтайландыруға және AI (Vertex AI) интеграциясына маманданған.