{"id":5825,"date":"2018-08-13T16:31:22","date_gmt":"2018-08-13T14:31:22","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=5825"},"modified":"2023-09-11T16:43:31","modified_gmt":"2023-09-11T14:43:31","slug":"abbyy-finereader-engine","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/abbyy-finereader-engine\/","title":{"rendered":"ABBYY FineReader Engine"},"content":{"rendered":"\n<p>W niniejszym artykule postaram si\u0119 przybli\u017cy\u0107 jedno z najlepszych rozwi\u0105za\u0144 OCR dost\u0119pnych na rynku. W pierwszej cz\u0119\u015bci wpisu przedstawi\u0119 og\u00f3lne informacje o silniku, a nast\u0119pnie opisz\u0119 jego cechy i zalety. Na koniec zaprezentuj\u0119 prosty przyk\u0142ad implementacji silnika do przeprowadzenia procesu OCR, kt\u00f3ry dokona konwersji z pliku graficznego do pliku tekstowego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Czym jest ABBYY FineReader Engine?<\/h2>\n\n\n\n<p>ABBYY FineReader Engine to zbi\u00f3r narz\u0119dzi, kt\u00f3re umo\u017cliwiaj\u0105 tworzenie rozwi\u0105za\u0144 wspomagaj\u0105cych:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCR &#8211; rozpoznawanie tekst\u00f3w drukowanych maszynowo<\/li>\n\n\n\n<li>ICR &#8211; rozpoznawanie tekst\u00f3w napisanych r\u0119cznie<\/li>\n\n\n\n<li>OMR &#8211; Rozpoznawanie znak\u00f3w optycznych<\/li>\n\n\n\n<li>OBR &#8211; rozpoznawanie kod\u00f3w kreskowych<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2018\/08\/fre_integration_scheme-e1533812402703.jpg\"><img decoding=\"async\" width=\"840\" height=\"383\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2018\/08\/fre_integration_scheme-e1533812402703.jpg\" alt=\"Schemat Integracji\" class=\"wp-image-5837\"\/><\/a><figcaption class=\"wp-element-caption\">\u0179r\u00f3d\u0142o (na 13.08.2018): <a href=\"https:\/\/abbyy.technology\/en:products:fre:start\" rel=\"nofollow\" >link<\/a><\/figcaption><\/figure>\n\n\n\n<p>Na czas pisania tego artyku\u0142u do proces\u00f3w OCR jest dost\u0119pnych: 208 j\u0119zyk\u00f3w drukowanych, 126 j\u0119zyk\u00f3w do rozpoznawania pisma r\u0119cznego oraz 28 kod\u00f3w kreskowych.<\/p>\n\n\n\n<p>Wsparcie dla system\u00f3w <strong>Windows<\/strong>, <strong>Linux, Mac OS<\/strong><br>Wsparcie dla j\u0119zyk\u00f3w <strong>C++<\/strong>, <strong>C#<\/strong>, <strong>Visual Basic .NET<\/strong>, <strong>Javascript<\/strong> , <strong>VBScript<\/strong>, <strong>Delphi<\/strong>, <strong>Java<\/strong><\/p>\n\n\n\n<p>Presti\u017cowy portal <strong>TechRadar<\/strong> w czerwcu 2018 wyr\u00f3\u017cni\u0142 <strong>ABBYY FineReader Engine<\/strong>&nbsp;tytu\u0142em \u201eNajlepsze oprogramowanie skanuj\u0105ce 2018\u201d.<br>Link do pe\u0142nego artyku\u0142u mo\u017cna znale\u017a\u0107&nbsp;<a href=\"https:\/\/www.techradar.com\/news\/best-scanning-software\" rel=\"nofollow\" >tutaj<\/a>&nbsp;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Proces OCR &#8211; Etapy<\/h2>\n\n\n\n<p><strong>1. Import obrazu<\/strong><br>Silnik potrafi wczytywa\u0107 obraz z wielu \u017ar\u00f3de\u0142. Zaimportowane mog\u0105 zosta\u0107 pliki graficzne zawieraj\u0105ce tekst w formacie TIFF, JPEG, BMP, PDF i wiele innych. Powszechnym sposobem jest dostarczenie obrazu ze skanera za pomoc\u0105 interfejsu TWAIN\/WIA, a tak\u017ce obraz\u00f3w pochodz\u0105cych z urz\u0105dze\u0144 mobilnych.<\/p>\n\n\n\n<p><strong>2. Pre-processing obrazu<\/strong><br>Po otrzymaniu obrazu ze \u017ar\u00f3d\u0142a zostaje on poddany procesowi \u201ewst\u0119pnego przetwarzania\u201d. W celu zwi\u0119kszenia dok\u0142adno\u015bci rozpoznawania, obraz jest poprawiany pod wzgl\u0119dem jako\u015bci za pomoc\u0105 funkcji (transformacja obrazu, binaryzacja, \u201ede-skewing\u201d, usuwanie szumu, itp.).<\/p>\n\n\n\n<p><strong>3. Analiza dokumentu<\/strong><br>Za pomoc\u0105 algorytm\u00f3w opartych na sztucznej inteligencji oraz technologii ABBYY Adaptive Document Recognition, OCR dokonuje analizy uk\u0142adu ka\u017cdej indywidualnej strony bior\u0105c pod uwag\u0119 dokument jako ca\u0142o\u015b\u0107. Proces definiuje przestrzenie dla rozpoznawania tekstu i dostarcza informacje na temat uk\u0142adu i formatu element\u00f3w do finalnej rekonstrukcji dokumentu na koniec procesu.<\/p>\n\n\n\n<p><strong>4. Rozpoznawanie<\/strong><br>Do rozpoznawania tekstu silnik dostarcza z\u0142o\u017cony zestaw technologii. Silnik z najwi\u0119ksz\u0105 dok\u0142adno\u015bci\u0105 potrafi wyodr\u0119bni\u0107 teksty drukowane (OCR), pisane r\u0119cznie (ICR), znaki (OMR) oraz kody kreskowe (OBR). Dzi\u0119ki mo\u017cliwo\u015bci stworzenia w\u0142asnych s\u0142ownik\u00f3w i wzor\u00f3w rozpoznawania, programista mo\u017ce zwi\u0119kszy\u0107 dok\u0142adno\u015b\u0107 rozpoznawania tekst\u00f3w napisanych w konkretnych j\u0119zykach, niestandardowych znak\u00f3w czy czcionek.<\/p>\n\n\n\n<p><strong>5. Eksport tekstu i rekonstrukcja dokumentu<\/strong><br>Ostatni etap OCR to eksport danych w zale\u017cno\u015bci od ustawie\u0144. SDK udost\u0119pnia wiele opcji eksportu i wiele poziom\u00f3w rekonstrukcji uk\u0142adu dokumentu. Dozwolone formaty to np. txt, XML, PDF i PDF\/A, edytowalne dokumenty Microsoft Office i inne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zalety silnika<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wykorzystanie wielordzeniowych procesor\u00f3w &#8211; <\/strong>ABBYY FineReader wspomaga przetwarzanie obraz\u00f3w r\u00f3wnolegle na wielu w\u0105tkach. Domy\u015blnym ustawieniem jest automatyczne wykrywanie, czy przetwarzanie wieloprocesorowe jest potrzebne.<\/li>\n\n\n\n<li><strong>Komponenty UI &#8211; <\/strong>oparte na ActiveX komponenty pozwalaj\u0105 tworzy\u0107 interfejs do podgl\u0105du, przetwarzania, edycji, weryfikacji i monitorowania procesu rozpoznawania.<\/li>\n\n\n\n<li><strong>Chmura i \u015brodowiska wirtualne &#8211; <\/strong>istnieje specjalny typ licencji przeznaczony do pracy przy rozwi\u0105zaniach chmurowych. Dzi\u0119ki niemu u\u017cytkownik ma szerszy zakres aplikacji i us\u0142ug:\n<ul class=\"wp-block-list\">\n<li>wirtualne \u015brodowiska: Oracle VM VirtualBox, Docker containers<\/li>\n\n\n\n<li>chmura: Amazon AWS , Microsoft Azure<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Rozpoznawanie wizyt\u00f3wek &#8211; <\/strong>SDK umo\u017cliwia wyodr\u0119bnienie danych z dokument\u00f3w skanowanych lub fotografowanych jako kilka obraz\u00f3w na jednej stronie. Rozpoznane dane mog\u0105 zosta\u0107 zapisane w formacie .<strong>vCard<\/strong> (format cz\u0119sto wykorzystywany do wysy\u0142ania wizyt\u00f3wek poczt\u0105 e-mail lub przez sie\u0107) lub w innych formatach (XML, Docx, Xlsx, Pdf, itp.).<\/li>\n\n\n\n<li><strong>Mo\u017cliwo\u015b\u0107 stworzenia w\u0142asnego j\u0119zyka rozpoznawania<\/strong><\/li>\n\n\n\n<li><strong>Skaner &#8211; <\/strong>tworzenie aplikacji z wykorzystaniem skanera<\/li>\n\n\n\n<li><strong>Klasyfikowanie dokument\u00f3w &#8211; <\/strong>tworzenie aplikacji wspomagaj\u0105cych kategoryzowania plik\u00f3w do predefiniowanych klas (realizacja przez uczenie maszynowe i NLP).<\/li>\n\n\n\n<li><strong>Dokumentacja <\/strong>&#8211; SDK posiada szczeg\u00f3\u0142ow\u0105 dokumentacj\u0119 wraz ze \u017ar\u00f3d\u0142ami kodu we wszystkich wspieranych j\u0119zykach programowania. Pr\u00f3bki kodu obejmuj\u0105 rozwi\u0105zania zwi\u0105zane z klasyfikacj\u0105 dokument\u00f3w, przetwarzaniem w batchu, nauk\u0105 wzorc\u00f3w u\u017cytkownika, skanowaniem, tworzeniem UI przy pomocy komponent\u00f3w, itp. Przyswojenie kodu gotowych program\u00f3w znacznie przyspiesza proces uczenia si\u0119 SDK silnika.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalacja wersji trial SDK<\/h2>\n\n\n\n<p>1. Zg\u0142oszenie zapotrzebowania na licencj\u0119 pr\u00f3bn\u0105 (60 &#8211; dniow\u0105) na <a href=\"https:\/\/www.abbyy.com\/en-us\/ocr-sdk\/request\/?purpose=trial?utm_source=TechPortal\" rel=\"nofollow\" >stronie<\/a>.<br>2. Przeczytanie i podpisanie zgody na licencj\u0119 Trial.<br>3. Pobranie plik\u00f3w i instalacja oprogramowania z otrzymanym kluczem.<br>4. Aktywowanie licencji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Przyk\u0142adowa implementacja w C#<\/h2>\n\n\n\n<p>Ze wzgl\u0119du na to, \u017ce na co dzie\u0144 pracuj\u0119 w C#, przedstawi\u0119 najprostszy przyk\u0142ad implementacji w tym j\u0119zyku. Aplikacja b\u0119dzie przeznaczona do przeprowadzenia procesu OCR na danym pliku graficznym i wyeksportowaniu wyniku w formacie rtf.<\/p>\n\n\n\n<p>Podstawow\u0105 operacj\u0105 przy aplikacjach wykorzystuj\u0105cych silnik ABBYY FineReader jest za\u0142adowanie silnika przez stworzenie obiektu EngineLoader, przekazuj\u0105c w parametrze uzyskan\u0105 licencj\u0119 developersk\u0105 \u201eSerial Number\u201d.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/Wczytanie silnika\nprivate void LoadEngine()\n{\nif(engineLoader == null)\n{\nengineLoader = new EngineLoader(AppConfig.GetDeveloperSN());\n}\n}\n<\/pre><\/div>\n\n\n<p>Nast\u0119pnie nale\u017cy okre\u015bli\u0107, jakiego profilu chcemy u\u017cywa\u0107. Mamy tutaj do wyboru sporo opcji, niekt\u00f3re z nich to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DocumentConversion_Accuracy<\/li>\n\n\n\n<li>DocumentConversion_Speed<\/li>\n\n\n\n<li>HighCompressedImageOnlyPdf<\/li>\n\n\n\n<li>BusinessCardsProcessing<\/li>\n\n\n\n<li>BarcodeRecognition<\/li>\n<\/ul>\n\n\n\n<p>Istnieje mo\u017cliwo\u015b\u0107 dopasowania profilu do potrzeb (czas procesowania, dok\u0142adno\u015b\u0107 uzyskanych wynik\u00f3w) i celu (rozpoznawanie kod\u00f3w kreskowych, zawarto\u015bci wizyt\u00f3wek, ksi\u0105\u017cek itp.).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/Wczytanie profilu\nengineLoader.Engine.LoadPredefinedProfile( \"DocumentConversion_Accuracy\");\n<\/pre><\/div>\n\n\n<p>Nast\u0119pnie nale\u017cy stworzy\u0107 obiekt FRDocument i wywo\u0142a\u0107 na nim szereg metod:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nstring imagePath = Path.Combine(AppConfig.GetAppFolder(), @\"InputFolder\\ImageFile.tif\");\nFRDocument document = engineLoader.Engine.CreateFRDocument();\n \ntry\n{\n\/\/ Wczytanie obrazu do dokumentu\ndocument.AddImageFile(imagePath, null, null);\n \n\/\/ Przetwarzanie\ndocument.Process(null);\n \n\/\/ Zapisanie wynik\u00f3w - plik rtf z domy\u015blnymi parametrami\ndocument.Export(Path.Combine(AppConfig.GetAppFolder(), @\"OutputFolder\\TextFile.rtf\"),\nFileExportFormatEnum.FEF_RTF, null);\n}\ncatch(Exception error)\n{\nMessageBox.Show(this, error.Message, this.Text, MessageBoxButtons.OK,MessageBoxIcon.Error);\n}\nfinally\n{\n\/\/ Zamkni\u0119cie dokumentu\ndocument.Close();\n}\n<\/pre><\/div>\n\n\n<p>Na koniec po wykonaniu operacji OCR nale\u017cy zwolni\u0107 silnik:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nprivate void UnloadEngine()\n{\nif (engineLoader != null)\n{\nengineLoader.Dispose();\nengineLoader = null;\n}\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Licencja i cena<\/h2>\n\n\n\n<p>Silnika ABBYY FineReader mo\u017cemy u\u017cywa\u0107 jedynie z licencj\u0105. Do wyboru dost\u0119pnych jest kilka opcji:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Licencja programistyczna \u2013 w celu tworzenia autorskiego rozwi\u0105zania (1 klucz sprz\u0119towy zawieraj\u0105cy 3 licencje sieciowe)<\/li>\n\n\n\n<li>Licencja RTL \u2013 w celu uruchomienia aplikacji z rozwi\u0105zaniem OCR. Cena jest uzale\u017cniona od potrzeb klienta i zale\u017cy mi\u0119dzy innymi od liczby przetwarzanych stron na miesi\u0105c, formatu danych, czasu trwania wsparcia technicznego, itp.<\/li>\n\n\n\n<li>Network Concurrent \u2013 licencje sieciowe \u2013 pozwalaj\u0105 na dzielenie licencji na kilku komputerach w obr\u0119bie jednej sieci.<\/li>\n<\/ul>\n\n\n\n<p>W celu uzyskania informacji cenowych nale\u017cy wej\u015b\u0107 na t\u0119&nbsp;<a href=\"https:\/\/www.abbyy.store\/pl-pl\/all-products\/sdk\/\" rel=\"nofollow\" >stron\u0119<\/a>&nbsp;i wype\u0142ni\u0107 formularz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>Silnik ABBYY FineReader SDK to narz\u0119dzie o ogromnych mo\u017cliwo\u015bciach dla szerokiej gamy programist\u00f3w tworz\u0105cych rozwi\u0105zania na r\u00f3\u017cne platformy. Kod pisany z wykorzystaniem SDK jest prosty z mo\u017cliwo\u015bci\u0105 bardzo szczeg\u00f3\u0142owej konfiguracji na potrzeb\u0119 okre\u015blonych cel\u00f3w. Czytelna dokumentacja oraz zestaw gotowych aplikacji testowych sprawiaj\u0105, \u017ce przyswojenie biblioteki staje si\u0119 niezwykle proste.<\/p>\n\n\n\n<p><strong>\u0179r\u00f3d\u0142a<\/strong>:<br><a href=\"https:\/\/www.finereader.pl\/produkty\/narzedzia-programistyczne\/abbyy-finereader-engine\" rel=\"nofollow\" >https:\/\/www.finereader.pl\/produkty\/narzedzia-programistyczne\/abbyy-finereader-engine<\/a><br><a href=\"https:\/\/abbyy.technology\/en:business:pricing\" rel=\"nofollow\" >https:\/\/abbyy.technology\/en:business:pricing<\/a><br><a href=\"https:\/\/www.abbyy.com\/en-au\/support\/engine\/11win\/product_info\/sr\/\" rel=\"nofollow\" >https:\/\/www.abbyy.com\/en-au\/support\/engine\/11win\/product_info\/sr\/<\/a><br><a href=\"https:\/\/abbyy.technology\/en:products:fre:finereader_engine_quick_start_guide\" rel=\"nofollow\" >https:\/\/abbyy.technology\/en:products:fre:finereader_engine_quick_start_guide<\/a><br><a href=\"https:\/\/www.abbyy.com\/en-me\/ocr-sdk\/ocr-stages\/\" rel=\"nofollow\" >https:\/\/www.abbyy.com\/en-me\/ocr-sdk\/ocr-stages\/<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;5825&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;8&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4.9&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;4.9\\\/5 ( votes: 8)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;ABBYY FineReader Engine&quot;,&quot;width&quot;:&quot;136.6&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 136.6px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            4.9\/5 ( votes: 8)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>W niniejszym artykule postaram si\u0119 przybli\u017cy\u0107 jedno z najlepszych rozwi\u0105za\u0144 OCR dost\u0119pnych na rynku. W pierwszej cz\u0119\u015bci wpisu przedstawi\u0119 og\u00f3lne &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/abbyy-finereader-engine\/\">Continued<\/a><\/p>\n","protected":false},"author":171,"featured_media":15249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314,1316],"tags":[129,613,611,610,614,463],"class_list":["post-5825","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","category-development-na-miekko","tag-c","tag-conversion","tag-image-recognition","tag-ocr","tag-programming","tag-sdk"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2018\/08\/BlogersiiCovery-OCR.jpg","category_names":["Development na twardo","Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/5825"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/171"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=5825"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/5825\/revisions"}],"predecessor-version":[{"id":24059,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/5825\/revisions\/24059"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/15249"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=5825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=5825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=5825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}