From cfa037e92da0a34f7919ce4ca9db2bd546995c93 Mon Sep 17 00:00:00 2001 From: FreeArtMan Date: Thu, 1 Apr 2021 08:46:27 +0100 Subject: Swift OCR post --- md/writeup/swift_ocr_example.md | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 md/writeup/swift_ocr_example.md (limited to 'md/writeup') diff --git a/md/writeup/swift_ocr_example.md b/md/writeup/swift_ocr_example.md new file mode 100644 index 0000000..fd0e169 --- /dev/null +++ b/md/writeup/swift_ocr_example.md @@ -0,0 +1,77 @@ +title:Swift OCR example +keywords:swift,ocr,macos + +# Swift OCR example + +## Intro + +After getting new M1 whanted to try some fancy machine learning stuff that avaliable. +Got inspired when seen new post on reddit about OCRImage tool realse. As +it was written in Object-C https://www.turbozen.com/sourceCode/ocrImage/ ,so I +decided that is good learning task to read the code and reimplement all in Swift. + +## OCR + +The whole working prototype can fit just in few lines of code. All you need to create +is text recognition requester and handle that collect results. There is few example on +apple doc page. + +```siwft +func recognizeImageUrl(_ url:URL, _ error: Error?) { + var pieces:[TextPiece] = [] + var err:NSError? + + var textRequest = VNRecognizeTextRequest(completionHandler: recognizeTextHandler(request:error:)) + + var handler = VNImageRequestHandler(url: url) + do { + try handler.perform([textRequest]) + } catch { + print("Cannot perform request error:\(error)") + } + } + + func recognizeTextHandler(request: VNRequest, error: Error?) { + print("Start recognize handler") + guard let observations = + request.results as? [VNRecognizedTextObservation] else { + return + } + + let recognizedStrings = observations.compactMap { observation in + // Return the string of the top VNRecognizedText instance. + return observation.topCandidates(1).first?.string + } + print("\(recognizedStrings)") + } +``` + +## Source code + +Example XCode project is located at http://git.main.lv/cgit.cgi/OCRImage.git/ +clone it and launch with XCode +```bash +git clone http://git.main.lv/cgit.cgi/OCRImage.git/ +``` + +## Future developments + +Could be nice to add sorting text, and some option to import location of text to json file with coordinates. + +Drawing boxes around original image with detected text is next thing to add. + +And there is alot of things that could be added to make it full featured OCR software. + + + +## Links + +http://git.main.lv/cgit.cgi/OCRImage.git/ +https://www.turbozen.com/sourceCode/ocrImage/ +https://turbozen.com/sourceCode/ocrImage/ocrImage_src/ +https://developer.apple.com/documentation/vision/recognizing_text_in_images +http://git.main.lv/cgit.cgi/OCRImage.git/tree/OCRImage/main.swift?h=main + + + + -- cgit v1.2.3