From 56fbba2ab79543a8be10a055bae986b2fcbe855a Mon Sep 17 00:00:00 2001 From: hysn99 Date: Sat, 30 Mar 2024 15:35:53 +0300 Subject: [PATCH] rod helper added --- app/lib/bot/rodhelper.go | 25 ++++++++++ app/lib/ocr/readpdf-75de5191c083.json | 12 +++++ app/lib/ocr/screenshot.png | Bin 0 -> 21800 bytes app/lib/ocr/visionapi.go | 67 ++++++++++++++++++++++++++ docs/deneme.xlsx | Bin 0 -> 15026 bytes 5 files changed, 104 insertions(+) create mode 100644 app/lib/bot/rodhelper.go create mode 100644 app/lib/ocr/readpdf-75de5191c083.json create mode 100644 app/lib/ocr/screenshot.png create mode 100644 app/lib/ocr/visionapi.go create mode 100644 docs/deneme.xlsx diff --git a/app/lib/bot/rodhelper.go b/app/lib/bot/rodhelper.go new file mode 100644 index 0000000..d6445ec --- /dev/null +++ b/app/lib/bot/rodhelper.go @@ -0,0 +1,25 @@ +package bot + +import ( + "time" + + "github.com/go-rod/rod" +) + +type Select struct { + Element *rod.Element + Selector string +} + +func (elemSelector *Select) SelectItem(changeValue string) error { + _, err := elemSelector.Element.Evaluate(rod.Eval(`document.querySelector("` + elemSelector.Selector + `").value = "` + changeValue + `";`)) + _, err = elemSelector.Element.Evaluate(rod.Eval(`document.querySelector("` + elemSelector.Selector + `").dispatchEvent(new Event('change'));`)) + return err + +} +func WaitLoad(frm *rod.Page) error { // belli bir süre redirect ten önceki js fonksiyonunun tamamlanması bekleniyor + wait := frm.WaitRequestIdle(50*time.Millisecond, nil, nil, nil) + wait() + err := frm.WaitLoad() + return err +} diff --git a/app/lib/ocr/readpdf-75de5191c083.json b/app/lib/ocr/readpdf-75de5191c083.json new file mode 100644 index 0000000..3a6344e --- /dev/null +++ b/app/lib/ocr/readpdf-75de5191c083.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "readpdf-247814", + "private_key_id": "75de5191c0835028caf9413f8023f26e353064f8", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJ0D23gU4luBgN\nRUmhL9h1qaBqNcv5KGPYUjDcdCGTixea8nOkOxZwYLmKU3VpEmizAAxe2zVrTH0J\nalJwW+u6UUKrgIDbV68/IzYKKKQ7HwrpVnjh0T8kSFTCsfoCcTAmhlFLvHtQBUdU\nxl1E5X+Ckp3K2LOZwi5lrlK3VttSuzFTWmQ2ZMjeEdxwPjsyTsM8XWQ+SQUoPYFj\nuLcqHFf8caZFPWXrxXluTOcJOl/N5OAvObrftUz2stNnwhuPI7648umzdeAuMWGW\nrRd0ZTPDtH0xx56nvSoghNREw9imNVKIlUPwSwCBZ5iNH6fiTO5IdeDG9qWf/STJ\nwVvaDj1xAgMBAAECggEAAdCVktOJgwf8xLcddQ2bwghxy4K1qtqUy0Ux8J7lY7uZ\nzWg7Z1FWClH/A8zBqYg42M3ko+sPYpT1gDgsivDIqzbqhTr1QwOu17/WpJC+U/8b\nd1hdDerLyTpn82LrqfSf8ji9p74Hfdi4+NIv1IbGdsN1bSA1vT7kcUBNY3NXKuSa\nm5ceq6cSzuPH8qxjgkMIxxARCQtNVksMk8lIBoXNk4xxBgGnOwgHWEK9bGarPXZO\n8Z9ruWHCAJL1fiXjyJbVhdz4q8euVdR10KpF+u0/lHx2JMlLBPuIDlC8sxpwX+/V\nSw5wFziGETJiiRgkKxEqKIt/WvjHxDHWkaNZPcXkgQKBgQD0rJvKn4/oS/4kECFo\nAPFZs7uHiMDuTKh9P4aE7Pu1b3sEXAfsjMk3N5j1eV8ACFLzOfCjAStue1MFj81S\nz4dl9NBRNUdE+uTORmiX/Ch2t6bSlKNi8CdkHHKAs6kVk2Wr2XBD0fYKEmGkuh++\nMenBPZuOBjSULy4v1wumW/2UTQKBgQDTJ7tNFzt7hMoW3/djasIHUdJ4m1JZWa1A\n4fDUfvCFARUUr0k1TxcHAtQ5wQwue+uF5J7OixI+xavwHSXBTPQLbn2V2Ypbaa/F\nNr63IR2IKrtwJzt8LTXBvREESajjolvb31Vxf14/0nJgW67bjaLu5/Yq3/mjjRIZ\nqg7PpdNvtQKBgQCD8PTOLn9/CEPTFLO/DwsXkVmmO/O2TbZqXDBhTB5sd+KBtlM7\nl6wGT7/3V+0H6nU43lzKuh2+pVhe3m4dovXj4EHaGP4Gz7lFFyjeFMeJRX37ftYg\ny1qinMiOaNPcY7DnHAlzOS0Rv1nSZ+AoQ2hHob5ZtzTxWAPzHmcU3fR/3QKBgQC8\nJOvcffXvUlurVDafa/GlCgAKnQMcQC6C4I9xGAaBzHwXKTSG/ojbI2csatnK1Xn/\nnLzv9rT0H7fbRG1utn3BbdsS2XpRh3Mpu2Tl0ej5enH3Nc3oEHSUwz1VX7jP08wb\ntvzwG3hET+S//RFp6eMjEqaif111oG5fVcrKtMwX/QKBgCCTlt3lBaZPuUInLEIK\nNRqR7iZnepJsDUMYJj/T/zg+JL0novWViVEQaFB88soNGXjV6WRmytlUDi3PpNe/\nswfxQICn+ylZtYD8VoHL1+l9kDBVUQlKmZuMgh8YKEWKHoAok5gZYedB4Gtte1XQ\n+ase2cuWUegX3FAlcMf3GBqE\n-----END PRIVATE KEY-----\n", + "client_email": "my-vision-sa@readpdf-247814.iam.gserviceaccount.com", + "client_id": "101714157123021750580", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-vision-sa%40readpdf-247814.iam.gserviceaccount.com" +} diff --git a/app/lib/ocr/screenshot.png b/app/lib/ocr/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..85564c19f4a213f15ddabd15e092a73e939c73ce GIT binary patch literal 21800 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 G`hNi^^8O3} literal 0 HcmV?d00001 diff --git a/app/lib/ocr/visionapi.go b/app/lib/ocr/visionapi.go new file mode 100644 index 0000000..04c9734 --- /dev/null +++ b/app/lib/ocr/visionapi.go @@ -0,0 +1,67 @@ +package ocr + +import ( + "context" + "fmt" + "os" + + "google.golang.org/api/option" + + vision "cloud.google.com/go/vision/apiv1" +) + +var credsPath = "C:/Users/huseyin/Desktop/project/notitek/BordroRobot/app/lib/ocr/readpdf-75de5191c083.json" + +func detectText(filePath string) ([]string, error) { + ctx := context.Background() + + client, err := vision.NewImageAnnotatorClient(ctx, option.WithCredentialsFile(credsPath)) + if err != nil { + return nil, fmt.Errorf("ImageAnnotatorClient oluşturulamadı: %v", err) + } + + f, err := os.Open(filePath) + if err != nil { + return nil, fmt.Errorf("Dosya açılamadı: %v", err) + } + defer f.Close() + + image, err := vision.NewImageFromReader(f) + if err != nil { + return nil, fmt.Errorf("Resim oluşturulamadı: %v", err) + } + + annotations, err := client.DetectTexts(ctx, image, nil, 10) + if err != nil { + return nil, fmt.Errorf("Metin tespit edilemedi: %v", err) + } + + res := make([]string, 0) + if len(annotations) == 0 { + return nil, fmt.Errorf("Metin tespit edilemedi: %v", err) + } else { + fmt.Println("Metin:") + for _, annotation := range annotations { + // fmt.Println(annotation) + res = append(res, annotation.Description) + + } + } + + return res, nil + +} + +func VisionApi(path string) ([]string, error) { + filePath := path // Örnek bir dosya yolu + + resp, err := detectText(filePath) + if err != nil { + fmt.Printf("Metin tespit edilemedi: %v\n", err) + return nil, err + } + for _, txt := range resp { + fmt.Println(txt) + } + return resp, nil +} diff --git a/docs/deneme.xlsx b/docs/deneme.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1ffdf3fbf04c6b91178206f395daa53dd0ee0383 GIT binary patch literal 15026 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 m@8o5ZY4A5H000PYugW(zowNUO_WuAz_^5^e literal 0 HcmV?d00001