Browse Source

【2025】【Tools】区域OCR,多次框选并识别,结果会叠加显示 修复

lizhe 1 month ago
parent
commit
d266f2bd53

+ 1 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -3730,6 +3730,7 @@ extension KMMainViewController {
             let image = page.thumbnail(of: rect.size) ?? NSImage()
             guard let model = self.rightSideController?.tool_OCRController?.model else { return }
             model.pageRange = [Int(orgPage.pageIndex())]
+            KMOCRManager.manager.clearOCRTextData()
             KMOCRManager.manager.convertOCR(images: [image], model: model, progress: { progress in
                 
             }) { [weak self] document, text, error in

+ 10 - 4
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/OCR/Tool/Manager/KMOCRManager.swift

@@ -49,6 +49,10 @@ class KMOCRManager: NSObject {
         return (KMGOCRManager.languages() as NSArray).value(forKeyPath: KMGOCRLanguageStringKey) as! [String]
     }
     
+    func clearOCRTextData() {
+        ocrDictionary.removeAll()
+    }
+    
     
 //    func isCantainsImagePage(_ document: CPDFDocument) -> Bool {
 //        var isContainsImagePage = false
@@ -242,7 +246,7 @@ extension KMOCRManager: KMGOCRManagerDelegate {
             manager.cancelRecognition()
             self.OCRManger = nil
         } else if model.showType == .area {
-            let string = self.fetchTXT(ocrDictionary: ocrDictionary)
+            let string = self.fetchTXT(ocrDictionary: ocrDictionary, needPageIndex: false)
             self.OCRComplete?(nil, string, nil)
         }
     }
@@ -447,7 +451,7 @@ extension KMOCRManager {
         }
     }
     
-    func fetchTXT(ocrDictionary: [NSNumber: Any]) -> String {
+    func fetchTXT(ocrDictionary: [NSNumber: Any], needPageIndex: Bool = true) -> String {
         let sortedKeys = ocrDictionary.keys.sorted(by: { ($0 ).compare($1 ) == .orderedAscending })
         var textString = ""
 
@@ -460,8 +464,10 @@ extension KMOCRManager {
             if textString.count > 0 {
                 textString += "\n\n"
             }
-            textString += String(format: NSLocalizedString("Page %ld", comment: ""), (key as AnyObject).intValue + 1)
-            textString += "\n"
+            if needPageIndex {
+                textString += String(format: NSLocalizedString("Page %ld", comment: ""), (key as AnyObject).intValue + 1)
+                textString += "\n"
+            }
             textString += rStr
         }
         return textString