Jeg var overrasket over at opleve at det er svært at styre camera funktionen på android. Det lykkedes desværre ikke mig at få det under kontrol, og nu lukker jeg ned for den indsats (for nu). Her vil jeg skrive lidt om der jeg har undersøgt og afprøvet.

De afsøgte muligheder

Jeg fandt to mulige frameworks til OCR:

  • Mobile vision
    • Den gamle version af tekstgenkendelse, indeholder et eksempel med en app der genkender tekst (næsten) samtidig med at kameraet opfanger teksten og skriver den på skærmen, og hvis man tabber på skærmen oplæser app’en teksten.
    • Gør brug af Camera apiet.
  • ML Kit text recognition
    • Den nye version af tekstgenkendelse som ligger som en del af Firebase. Indeholder både en tekstgenkender som kan bruges lokalt på enheden, og en cloud-baseret tekstgenkender som kan genkende flere typer af bogstaver (ud over latinske) og sprog.
    • kan implementeres i et kamera, men eksempel-appen bruger billeder.

Og mindst tre mulige APIer til androids camera:

  • Camera
    • er angivet til at være forældet.
  • Camera2
    • er anbefalet.
    • der er ingen vejledning.
    • dokumentationen består af en API oversigt.
  • CameraX
    • fungerer som en androidx wrapper til camera2.
    • APIet er i alpha stadie.

Refleksion

Endnu engang oplever jeg at android udvikling kræver meget boiler plate kode for at kunne sætte noget igang. Man kan ikke bare anmode om at bruge kameraet og få vist hvad det filmer. Der skal vælges rettigheder, tjekkes rettigheder, vælges front eller bag-kamera, opsættes preview og behandling af billede (og sikkert flere endnu).

Jeg mistede overblikket i al den boilerplate kode der skulle produceres for overhovedet at komme igang med kameraet, at jeg aldrig fik koblet dette ind i mit primære program hvor jeg skulle bruge det. Dertil kommer koblingen til OCR-frameworket, som aldrig nåede at blive helt relevant på grund af før nævnte problemer.

Jeg har helt klart endnu engang undervurderet hvor meget tid jeg skulle bruge på dette emne, men jeg er stadig overbevist om at det er muligt at komme i mål med (det kan man jo se på de api eksempler jeg har fundet).

Set i bagklogskabens klare lys, skulle jeg have arbejdet med denne funktionalitet tidligere i projektet, så det kunne komme med i det endelige produkt. På nuværende tidspunkt har jeg ikke rigtig mere tid til udvikling desværre. Måske prøver jeg igen senere - det kunne være meget sjovt at få styr på hvordan man bruger kameraet på et device.