← Всички публикации

Как KORENA изгради индекс на цените на дървесината върху FourA

KORENA изгради ежедневен европейски индекс на цените на дървесината на базата на горски портали, PDF файлове от търгове и десет валути. FourA е слоят за request зад него.

Данните за цените на дървесината в Европа са технически публични, но практически неизползваеми. Една държава посочва цените на дъба в евро на кубичен метър, без ДДС. Съседна страна споделя цени на бука в местна валута, с включен данък, скрити в сканиран PDF без слой за търсене на текст. За да станат нещата още по-сложни, стояща дървесина, трупи край пътя и избрани партиди от търгове често се котират едни до други, сякаш са идентични продукти.

Суровите данни съществуват. Пазарната информация не.

KORENA стартира KORENA Timber Index, за да коригира това. Резултатът е ежедневен, свободно достъпен референтен индекс за цените на европейска широколистна дървесина, строителен дървен материал и талпи. Към средата на 2026 г. индексът проследява приблизително две дузини видове и 170 регионални ценови реда в десет държави (Румъния, Германия, България, Полша, Франция, Австрия, Италия, Финландия, Норвегия, Швеция), плюс общоевропейско пазарно ниво.

За да може инженерен екип от двама души да покрие такъв обем, KORENA трябваше да вземе едно ключово решение: кой управлява работата с мрежата. Те избраха FourA и пренасочиха всичко през него.

Един шлюз към мрежата

KORENA направи архитектурен избор в ранен етап: всяка външна web заявка минава през FourA. Те се освободиха от отделни скрапери, еднократни скриптове и персонализирани команди, скрити в кодовата база.

Не ставаше въпрос за удобство. Ставаше въпрос за последователност. Горските портали се държат непредвидимо. Някои са статични HTML страници. Други са модерни платформи за търгове, които показват данни само след като браузърът ги рендира. Държавните сайтове често са бавни, остарели или със сериозна защита.

Като пренасочва целия трафик през инфраструктурата за заявки на FourA, KORENA управлява повторните опити, backoff механизмите, логването и алертите по еднакъв начин за всеки източник. Всеки извлечен документ може да бъде хеширан, съхранен и проследен обратно до крайната му цена за целите на одита.

Избор на правилна стратегия за извличане според източника

Вместо да вграждат твърдо логика за скрапване за всеки сайт, KORENA свързва всеки източник на данни с конкретен FourA endpoint директно в своята база данни (вижте избор на правилния тип задача за пълния разбор). Те могат да сменят стратегии, без да променят основния си код за парсване:

  • Single (/single/): статични HTML страници, XML фийдове и директни сваляния на PDF. Германски статистически отчети, актуализации от българските държавни горски стопанства, румънски ценови таблици. Бърз, лек, правилният избор по подразбиране за повечето сайтове.

  • Browser (/browser/): интерактивни web приложения, които изискват реален браузърен контекст. Полската платформа за търгове e-Drewno изисква рендиране, преди да се покажат стойностите. Първоначалният HTML не съдържа нищо полезно.

  • Proxy Finder (/proxy/): резервният вариант за най-трудните цели. По-силна ротация, плюс unblocker: true за проверки на ниво handshake.

Тъй като това е настройка за отделен източник, а не твърдо кодиран скрипт, KORENA може да премести източник от Single към Browser или към Proxy Finder, когато даден сайт промени защитите си. Слоят за парсване изобщо не разбира за това.

Сканирани PDF файлове: най-трудната част

Съвременните уеб API са ясни. Най-трудният за автоматизиране случай са PDF файловете, съдържащи само изображения. Ценови листи и резултати от търгове, публикувани като сканирани копия без никакъв текстов слой. За човек това е просто досадно. За ежедневен индекс обаче това спира целия пайплайн.

Пайплайнът на KORENA се справя с тях чрез ясно разделение на задачите:

  • Извличане: FourA изтегля суровите байтове на PDF файла ежедневно и надеждно.

  • Оценка на текста: KORENA проверява файла за използваем вграден текстов слой.

  • Обработка и извличане: ако PDF файлът е плоско изображение, KORENA растеризира страниците и ги прекарва през OCR и AI извличане на документи, прилагайки персонализирани езикови указания и речници на видовете дървесина, за да улови местната горска терминология.

  • Валидиране на схемата: изходните данни се валидират спрямо същата схема, както всеки друг източник.

Нищо от това не работи, ако не можете да изтегляте документа надеждно всеки ден. Това е стъпката, за която отговаря FourA.

Извличане срещу разбиране: чисто разделение

Работата на FourA е да доставя сурови байтове надеждно. Няма нужда да разбира нищо от дървен материал. Това позволява на KORENA да насочи 100% от усилията си към това, което наистина умее: превръщането на хаотични данни в стандартизиран индекс. Всичко, специфично за домейна, остава в KORENA. HTML се парсва локално, дигиталните PDF файлове се четат с pdfjs-dist, а сканираните PDF файлове се обработват чрез OCR.

Стъпката по нормализация е мястото, където суровите числа се превръщат в индекс. Цената на дърво на корен не е цена на трупи за разбичване, а резултат от местен търг с включен ДДС не е пряко сравним с експортна оферта без ДДС. За да превърне суровите числа в сравнима пазарна информация, KORENA преобразува всички данни в един стандарт: евро на кубичен метър, без ДДС, франко доставка.

За да направи това точно, системата отчита:

Индексът също така поддържа отделните пазарни нива разделени. Необработената объл дървесина на едро, търговете за скъпа дървесина и обявите на дребно се показват като отделни категории и никога не се смесват. Премиум партида от търг не може да изкриви базовото ниво.

Разделението е същността: FourA решава проблема с достъпа до мрежата, а KORENA решава проблема с дървения материал. Нито едното не се превръща в черна кутия, от която другото зависи.

Защо прозрачността в ценообразуването на дървесината внезапно стана спешна

По-строгите европейски регулации, включително Регламентът на ЕС относно обезлесяването (EUDR), тласкат пазара на дървесина към пълна проследимост и по-чиста документация за произход. Прозрачността на цените е другата половина от това уравнение. Производителите на дървесина, сравняващи регионални стойности, купувачите, валидиращи оферти, и дигиталните пазари, определящи базови ставки, се нуждаят от ежедневни, локализирани, сравними данни. Не остарели годишни средни стойности. Не единични локални числа.

За да може малък инженерен екип от двама души да покрие десет държави и стотици непредвидими уеб формати, те не можеха да си позволят да губят време в управление на proxy инфраструктура, флотилии от браузъри и корекции сайт по сайт (вижте скритата цена на поддръжката на собствени скрапери за пълната сметка). FourA поема слоя за заявки. KORENA печели обратно времето, за да се съсредоточи върху нормализация на дървесните видове, настройка на OCR, ценова логика и одитни пътеки, работата, която само те могат да свършат.

Ежедневните цени на дървесината преди означаваха телефонно обаждане до регионалния брокер. Сега всеки може сам да начертае кривата на timber-index.korena.eu. Следващите десет продукта от типа Index няма да имат време да изграждат fetch слоя от нулата. Това е залогът, който правим.


Изграждате продукт върху публични уеб данни и ви е омръзнало да поддържате собствени скрапери и proxy инфраструктура? Започнете с FourA.