ceskaexpedice / kramerius-web-client

Novy klient pro Krameria
13 stars 14 forks source link

dotaz: singlepage a řazení dvojstran #487

Open zabak opened 2 years ago

zabak commented 2 years ago

@honza-rychtar co potřebuje klient jako minimum, aby správně zobrazoval dvoustrany?

Jde mi o problém tabulek, které by měly být vidět vedle sebe když zobrazím dvoustranu

https://dnnt.mzk.cz/view/uuid:ea26def1-199e-11e3-bd38-5ef3fc9ae867?page=uuid:c885f330-19df-11e3-b62e-005056825209

ale jsou o jednu stranu posunuté kvůli vložené mapě

https://dnnt.mzk.cz/view/uuid:ea26def1-199e-11e3-bd38-5ef3fc9ae867?page=uuid:b5fb6600-19df-11e3-b62e-005056825209

Pokusili jsme se tu vloženou mapu označit jako singlepage ale nestačilo to. Je v takovém případě nutné mít označené i všechny stránky jako left a right?

honza-rychtar commented 2 years ago

@zabak klient ještě nepoužívá data z MODS (note=[singlePage|left|right]) pro určení pozice strany. Pořád platí informace zde https://github.com/ceskaexpedice/kramerius-web-client/issues/178

Informace o pozici strany by měla být v indexu. V K7 indexu to je (page.placement), v K5, takže to pojďme raději udělat až od K7.

Teď jsou 3 možnost.

  1. všechny stránky nemají informaci o pozici. Pak se použije současná funkcionalita, kdy klient použije svou heuristiku pro určení pozice všech stran
  2. všechny stránky mají informaci o pozici. Pak se použije tato informace z dat a klient nic nepočítá.
  3. některé stránky mají a některé nemají informaci o pozici. Tohle je složitější. Pokud už se to řeší v datech, pak by chybějící pozice měly být určeny už při výrobě/editaci dat. Ať už manuálně nebo automaticky. Např. pokud určíš tu vloženou mapu jako single, tak by to mělo být součástí té editace, že se upraví i všechny ostatní strany. Protože pokud je pozice strany součásti dat, tak při změně pozice jedné strany jsi fakticky nepřímo ovlivnil i pozici ostatních stran a mělo by se to propsat do dat. Nicméně, .... není to nutné a i když se určí v datech pozice jen jedné strany, tak klient to může použít jako jeden z dalších vstupů pro svou heuristiku z 1. Ale ideálně by se ta heuristika měla použít už při té výrobě/editaci a mít to přímo v datech.

V K7 MZK testu už je dost dat z pozicemi stran v MODS, takže bych teď udělal tu část 2., tj. pokud mají všechny strany informaci o pozici, tak to klient použije. Tím se posuneme dál a vyřešíme tu část 3.

honza-rychtar commented 2 years ago

Chtělo by to i nějakou analýzu současného stavu. Je tam spousta chyb, při zpracování cca posledních cca 50 veřejných monografií z https://k7-test.mzk.cz/ u velké části info o pozici buď chybí nebo (což je horší) je špatně.

A) lef místo left https://www.digitalniknihovna.cz/mzk/view/uuid:0ea86cb0-4611-11ec-aea4-5ef3fc9bb22f?page=uuid:c24eab04-2fa1-4ff7-8899-d0b6f4fe5f8c https://www.digitalniknihovna.cz/mzk/view/uuid:53b10960-4d01-11ec-b757-005056827e51?page=uuid:02917034-2092-440d-a3a3-82467c57b6a6 Strana [9] https://kramerius.mzk.cz/search/api/v5.0/item/uuid:02917034-2092-440d-a3a3-82467c57b6a6/streams/BIBLIO_MODS <mods:note>lef</mods:note>

B) righ místo right https://www.digitalniknihovna.cz/mzk/view/uuid:98087810-746a-11ec-8ca2-005056827e52?page=uuid:0bde375e-90a3-4eb7-8afd-b3550d92c81c Strana 345 https://kramerius.mzk.cz/search/api/v5.0/item/uuid:4c3a3880-6443-4bf1-b95f-b1148f09f7a3/streams/BIBLIO_MODS <mods:note>righ</mods:note>

C) single místo singlePage

D) Prohozené levé a pravé strany (podle MODS stran je titulka vlevo a číslování na vnitřní části stran) (Příklady jsou uváděny do instalace, která používá heuristiku, která to zobrazí správně, špatně je to pak v datech v MODS) https://www.digitalniknihovna.cz/mzk/view/uuid:c28d2dd0-527b-11ec-a74c-005056827e52?page=uuid:ff1f1692-c1f4-42b3-87ef-f3a9c0a3a9e3 https://www.digitalniknihovna.cz/mzk/view/uuid:7413dd90-4090-11ec-a74c-005056827e52?page=uuid:7afca128-4744-46a4-abed-473a5a13a7ec https://www.digitalniknihovna.cz/mzk/view/uuid:cfc258b0-4c39-11ec-aea4-5ef3fc9bb22f?page=uuid:ba846621-6748-47d8-b87a-14ed2f577534 https://www.digitalniknihovna.cz/mzk/view/uuid:f2d86c50-58fe-11ec-b436-5ef3fc9bb22f?page=uuid:fde35bea-c1b9-454b-ae1f-eb0afde6dd07 https://www.digitalniknihovna.cz/mzk/view/uuid:702a8630-4b98-11ec-a74c-005056827e52?page=uuid:01cfbab0-dde8-428e-a7b6-99f9332ec1d6

honza-rychtar commented 2 years ago

@zabak Zjisti prosím postup přiřazovaní pozice stran v digitalizačních linkách.

honza-rychtar commented 2 years ago

Ve verzi 2.3.3 se nad K7 se pozicují stránky podle MODS, pokud mají všechny stránky informaci o pozici.

zabak commented 2 years ago

funguje, zavírám

honza-rychtar commented 2 years ago

@zabak počkej. Tohle ještě není na zavření, ale k dlouhému testování nejen u klienta. Tady jsme se domluvili, že se udělá revize toho, jak ta data o pozici vznikají.

@zabak Zjisti prosím postup přiřazovaní pozice stran v digitalizačních linkách.

Je tam spousta chyb, viz výše.

Teď se použije ta informace z MODS jen v K7 a jen pokud je u všech stran. Protože z klienta není zřejmé, jestli se použila heuristika nebo údaj z MODS stran, tak se do konzole vypisuje typ pozicování. use mods page placement true | false

Takže konkrétně, stejný dokument

K5

K7

Teď musíme zajistit, aby ty chyby u výroby dat nevznikaly. A taky aby tam nebyly ty překlepy - lef/left, righ/right, single/singlePage

zabak commented 2 years ago

OK, můžeme to sledovat tady. Konkrétně ty tebou identifikovaná chybějící "t" jsou jen v Krameriu ale ne v LTP, takže se asi odstraní reimportem. Horší bude jak najít ty prohozené pravé a levé strany. Vypsat titulní listy které jsou left?

zabak commented 2 years ago

@honza-rychtar mám dotaz: v MODSU http://dk.kramerius.org/mzkk7/view/uuid:c28d2dd0-527b-11ec-a74c-005056827e52?page=uuid:02bc0aec-4fd8-43dc-89d7-6affbe299b75 je uvedeno singlePage</mods:note> ale v solru je uvedeno "page.placement": "single". Jak vlastně indexer ty věci indexuje? Myslel jsem že vezme cokoli co je v modsu v note a to zaindexuje, ale zjevně je to složitější.

luckajirku commented 2 years ago

v MODSU http://dk.kramerius.org/mzkk7/view/uuid:c28d2dd0-527b-11ec-a74c-005056827e52?page=uuid:02bc0aec-4fd8-43dc-89d7-6affbe299b75 je uvedeno mods:notesinglePage</mods:note>

Petře, proč vlastně máte tuhle stranu (přední desky) popsanou jako singlepage? Jestli je to jen kvůli testování, tak to přejdi:-). Ale jestli je to jakože správně, tak my to left/right/singlepage chápeme jinak. Že pravá/levá se popisuje podle toho, kde se ta strana skutečně nachází, ne podle toho, jak zpracovatel domýšlí, že se má strana zobrazit v závislosti na tom, jestli má druhou do páru pro dvoustránkové zobrazení. Přední desky budou vždycky (u toho co běžně digitalizujeme - při čtení zleva doprava) pravá strana, i když ve dvoustránkovém zobrazení jim bude chybět ten levý protějšek, stejně tak zadní desky budou levá strana a nebudou mít v zobrazení pravý protějšek. A singlepage by mělo být jen pro ty (úmyslně) nerozdělené skeny dvoustran/skládaček... Nebo to chápeme špatně?

honza-rychtar commented 2 years ago

Indexer zpracovává slovníkové hodnoty, tak aby se potom daly co nejlépe použít. Např. typ vydání výtisku může být v MODS přes

<mods:physicalDescription>
    <mods:note>ranní vydání;</mods:note>
</mods:physicalDescription>

nebo přes

<genre type="morning">issue</genre>

Indexer tohle sjednotí a ještě přidá pomocné pole pro řazení.

"issue.type.code": "morning",
"issue.type.sort": 1,

Takže klient nemusí řešit různé zápisy, transformace a berličky, ale má k dispozici jasně definovaná data pro své potřeby.

U typu stran je to podobně. Typ strany je možné určit jednou ze tří hodnot left, right, singlePage v poznámce v MODS. Z pohledu MODS je to ale pořád jen poznámka, takže indexer hledá právě tyto 3 hodnoty a uloží je do pole dál už jasně definovaného jako pozice strany page.placement Konkrétně <note>left</note> -> "page.placement": "left" <note>right</note> -> "page.placement": "right" <note>singlePage</note> -> "page.placement": "single" Ale např. <note>Kávová skvrna v levém dolním rohu</note> neindexuje, protože je to validní MODS poznámka, kterou neindexujeme. Pokud bych poznámky indexovaly, pak by ji indexer uložil do pole pro poznámku a ne do pole pro pozici strany.

A proč se převádí singlePage na single? Protože indexer ještě sjednotí tvar toho zápisu.

honza-rychtar commented 2 years ago

@luckajirku Já to chápu tak, že pokud si vezmu tu fyzickou knihu a položím před sebe na stůl, tak strana je vlevo/vpravo pouze pokud má ten svůj protějšek a samostatně pokud ho nemá. Pokud si teda položím položím před sebe zavřenou knihu, tak přední i zadní desky jsou samostatně - singlePage.

Na druhou stranu ano, pokud si otevřu na iPadu knihu, tak mi zobrazí přední desky vpravo a vlevo nechá prázdné místo, protože víc kopíruje fyzické otáčení stran. Kramerius (teď na základně heuristiky) zobrazuje strany bez protějšku vždy uprostřed. Takže záleží na účelu toho proč ty údaje do MODS vůbec vkládáme a čeho tím chceme dosáhnout. Pokud chceme mít v prezentaci přední desky vpravo, tak to popisujme jak píšeš. Klient by se pak musel trochu upravit a vlastně by bylo 5 stavů (vlevo s pravou stranou, vlevo bez pravé strany, vpravo s levou stranou, vpravo bez levé strany, samostatně uprostřed).

Tohle by bylo dobré si ujasnit napříč knihovnami. Čistě prakticky to tvé řešení je lepší v tom, že z něj jde udělat automatická konverze do druhého řešení (levá bez pravé je samostatná), kdežto naopak to nepůjdu (samostatná může být vlevo/vpravo/samostatná).

luckajirku commented 2 years ago

ze standardu: "označení pro pravou (right) či levou (left) stranu podle řazení v dokumentu; pro označení strany spojené z vice snímků stran pak singlePage" - @vjirousek - můžeš prosím vysvětlit, jak je to míněno? Pro nás je to jednoznačné ("podle řazení v dokumentu" a "strany spojené z vice snímků stran"), ale evidentně se k tomu dá přistupovat buď z pohledu předlohy a umístění strany vzhledem ke hřbetu, nebo z pohledu budoucího dvoustránkového zobrazení v Krameriovi... Tohle by se mělo vyjasnit:-).

luckajirku commented 2 years ago

Pokud chceme mít v prezentaci přední desky vpravo, tak to popisujme jak píšeš. Klient by se pak musel trochu upravit a vlastně by bylo 5 stavů (vlevo s pravou stranou, vlevo bez pravé strany, vpravo s levou stranou, vpravo bez levé strany, samostatně uprostřed).

Takhle jsem to nemyslela, že se to musí zobrazovat vpravo. Jedna věc je jak to popsat, a druhá, jak to zobrazit. I strana popsaná "right" se přeci může zobrazit uprostřed, pokud máme pocit, že je to tak hezčí a uživatel to chce... Přijde mi rozumnější mít jednoznačný. logický popis bez knihovnické kreativity a pak nadefinovat klientovi, jak má co zobrazovat, než to ohýbat už při popisu.

zabak commented 2 years ago

Plyne mi z toho závěr, že pokud mám v současnosti přední desky popsané jako right, singlePage nebo je nemám popsané, tak se vždy zobrazí doprostřed a zmizí i přepínač na přepnutí do dvoustránkového režimu, což sice dokonale nekopíruje reálnou knihu, ale je to dostatečně dobré řešení. Kdyby tam ten přepínač byl, tak můžu tu jednu stránku přepnout do dvoustránkového zobrazení a pak by dejme tomu mohla opravdu skočit doprava, pokud by byla označená right. A navíc pak můžu zřídit animaci otáčení stran. Uvidíme co řekne @vjirousek

honza-rychtar commented 2 years ago

Horší bude jak najít ty prohozené pravé a levé strany. Vypsat titulní listy které jsou left?

@zabak TitlePage - left - 5807x https://k7-test.mzk.cz/search/api/client/v7.0/search?q=page.type:TitlePage%20AND%20page.placement:left&fl=pid TitlePage - right - 26323x https://k7-test.mzk.cz/search/api/client/v7.0/search?q=page.type:TitlePage%20AND%20page.placement:right&fl=pid TitlePage - single - 1488x https://k7-test.mzk.cz/search/api/client/v7.0/search?q=page.type:TitlePage%20AND%20page.placement:single&fl=pid

17 % titulních stran s vyplněnou pozici má vyplněno - left - titulní strana vlevo. Tohle nejsou chyby, to je špatně nastavený proces. Zdá se, že se to často prostě nasází hned od první strany levá, pravá, levá, pravá, ... V tomhle případě lepší žádná informace než špatná informace, protože ta heuristika ma mnohem menší chybovost než 17 %.

vjirousek commented 2 years ago

ze standardu: "označení pro pravou (right) či levou (left) stranu podle řazení v dokumentu; pro označení strany spojené z vice snímků stran pak singlePage" - @vjirousek - můžeš prosím vysvětlit, jak je to míněno? Pro nás je to jednoznačné ("podle řazení v dokumentu" a "strany spojené z vice snímků stran"), ale evidentně se k tomu dá přistupovat buď z pohledu předlohy a umístění strany vzhledem ke hřbetu, nebo z pohledu budoucího dvoustránkového zobrazení v Krameriovi... Tohle by se mělo vyjasnit:-).

@luckajirku Ve standardu je to uvedené a myšlené skutečně takto, "singlePage" by měla sloužit pouze pro snímek více stran (typicky pro nerozdělenou dvoustránku), který by rozbil řazení. Přední deska by měla být "right", zadní "left". Označení left/right/singlePage se nicméně primárně do standardu doplňovalo pro korektní řazení stránek ve dvoustránkovém zobrazení, o využití k zarovnání na konkrétní pozici (doprostřed/doleva/doprava) se ještě neuvažovalo, proto se zřejmě i při tvorbě dat označení singlePage/right pro přední desku v některých případech zaměňují.

annie-cz commented 9 months ago

Bylo řešeno v releasu ve verzi v2.3.3. Můžeme zavřít?

zabak commented 9 months ago

Ne, tohle je nedotažené, budeme se k tomu ještě muset vrátit, viz znovuotevření 15.3.2022.