{"id":13639378,"url":"https://github.com/gnames/gnfinder","last_synced_at":"2026-02-01T09:16:07.819Z","repository":{"id":57493992,"uuid":"137407958","full_name":"gnames/gnfinder","owner":"gnames","description":"GNfinder finds scientific names in UTF8 texts, PDF files, MS Word/Excel documents, URLs etc.","archived":false,"fork":false,"pushed_at":"2025-04-17T21:47:18.000Z","size":215009,"stargazers_count":52,"open_issues_count":21,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-01-12T18:00:05.256Z","etag":null,"topics":["biodiversity-heritage-library","biodiversity-informatics","bioinformatics"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnames.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-14T20:51:08.000Z","updated_at":"2026-01-10T13:07:56.000Z","dependencies_parsed_at":"2025-04-14T12:01:23.382Z","dependency_job_id":null,"html_url":"https://github.com/gnames/gnfinder","commit_stats":{"total_commits":224,"total_committers":3,"mean_commits":74.66666666666667,"dds":0.008928571428571397,"last_synced_commit":"e14f6467748e2b43eef0286206ae9f17873f5c0e"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/gnames/gnfinder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnames%2Fgnfinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnames%2Fgnfinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnames%2Fgnfinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnames%2Fgnfinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnames","download_url":"https://codeload.github.com/gnames/gnfinder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnames%2Fgnfinder/sbom","scorecard":{"id":431020,"data":{"date":"2025-08-11","repo":{"name":"github.com/gnames/gnfinder","commit":"00a072c5a767a4d1d1ea7e855bfce38103de385d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.1.6 not signed: https://api.github.com/repos/gnames/gnfinder/releases/159962150","Warn: release artifact v1.1.5 not signed: https://api.github.com/repos/gnames/gnfinder/releases/157231846","Warn: release artifact v1.1.4 not signed: https://api.github.com/repos/gnames/gnfinder/releases/139711542","Warn: release artifact v1.1.3 not signed: https://api.github.com/repos/gnames/gnfinder/releases/110746754","Warn: release artifact v1.1.2 not signed: https://api.github.com/repos/gnames/gnfinder/releases/96856476","Warn: release artifact v1.1.6 does not have provenance: https://api.github.com/repos/gnames/gnfinder/releases/159962150","Warn: release artifact v1.1.5 does not have provenance: https://api.github.com/repos/gnames/gnfinder/releases/157231846","Warn: release artifact v1.1.4 does not have provenance: https://api.github.com/repos/gnames/gnfinder/releases/139711542","Warn: release artifact v1.1.3 does not have provenance: https://api.github.com/repos/gnames/gnfinder/releases/110746754","Warn: release artifact v1.1.2 does not have provenance: https://api.github.com/repos/gnames/gnfinder/releases/96856476"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/gnames/gnfinder/lint.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/gnames/gnfinder/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/gnames/gnfinder/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/gnames/gnfinder/test.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine:3.17 to alpine:3.17@sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3787 / GHSA-fv92-fjc5-jj9h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T03:21:12.456Z","repository_id":57493992,"created_at":"2025-08-19T03:21:12.456Z","updated_at":"2025-08-19T03:21:12.456Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28974543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T08:16:14.655Z","status":"ssl_error","status_checked_at":"2026-02-01T08:06:51.373Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["biodiversity-heritage-library","biodiversity-informatics","bioinformatics"],"created_at":"2024-08-02T01:01:00.049Z","updated_at":"2026-02-01T09:16:07.789Z","avatar_url":"https://github.com/gnames.png","language":"Go","funding_links":[],"categories":["Name and Taxonomy Analysis"],"sub_categories":[],"readme":"# Global Names Finder (GNfinder)\n\n[![DOI](https://zenodo.org/badge/137407958.svg)](https://zenodo.org/badge/latestdoi/137407958)\n[![Doc Status][doc-img]][doc]\n[![Go Report Card][go-report-img]][go-report]\n\nTry `GNfinder` [online][finder-web] or learn about its [API][apidoc].\n\nVery fast finder of scientific names. It uses dictionary and NLP approaches. On\nmodern multiprocessor laptop it is able to process 15 million pages per hour.\nWorks with many file formats and includes names verification against many\nbiological databases. For full functionality it requires an Internet\nconnection.\n\n`GNfinder` is also awailable via [web][finder-web] or\nas a [RESTful API][apidoc].\n\n\u003c!-- vim-markdown-toc GFM --\u003e\n\n* [Citing](#citing)\n* [Features](#features)\n* [Installation](#installation)\n    * [Homebrew on Mac OS X, Linux, and Linux on Windows (WSL2)](#homebrew-on-mac-os-x-linux-and-linux-on-windows-wsl2)\n    * [Arch Linux AUR package](#arch-linux-aur-package)\n    * [Manual Install](#manual-install)\n        * [Linux and Mac without Homebrew](#linux-and-mac-without-homebrew)\n        * [Windows without Homebrew and WSL](#windows-without-homebrew-and-wsl)\n        * [Go](#go)\n* [Configuration](#configuration)\n* [Usage](#usage)\n    * [Usage of a web-based application.](#usage-of-a-web-based-application)\n    * [Usage of RESTful API](#usage-of-restful-api)\n    * [Usage as a command line app](#usage-as-a-command-line-app)\n    * [Usage as a library](#usage-as-a-library)\n    * [Usage as a docker container](#usage-as-a-docker-container)\n* [Projects based on GNfinder](#projects-based-on-gnfinder)\n* [Development](#development)\n* [Testing](#testing)\n\n\u003c!-- vim-markdown-toc --\u003e\n\n## Citing\n\n[Zenodo DOI] can be used to cite GNfinder.\n\n## Features\n\n* Multiplatform app (supports Linux, Windows, Mac OS X).\n* Self-contained, no external dependencies, only binary `gnfinder` or\n  `gnfinder.exe` (~15Mb) is needed. However the internet connection is\n  required for name-verification.\n* Includes REST API and web-based User Interface.\n* Takes UTF8-encoded text and returns back CSV, TSV or JSON-formatted output\n  that contains detected scientific names.\n* Extracts text from PDF files, MS Word, MS Excel, HTML, XML, RTF, JPG,\n  TIFF, GIF etc. files for names-detection.\n* Downloads web-page from a given URL for names-detection.\n* Optionally, automatically detects the language of the text, and adjusts Bayes\n  algorithm for the language. English and German languages are currently\n  supported.\n* Uses complementary heuristic and natural language processing algorithms.\n* Optionally verifies found names against multiple biodiversity databases using\n  [gnindex] service.\n* Detection of nomenclatural annotations like `sp. nov.`, `comb. nov.`,\n  `ssp. nov.`, `nom. nov.` and their variants.\n* Ability to see words that surround detected name-strings.\n* The library can be used concurrently to **significantly improve speed**.\n  On a server with 40threads it is able to detect names on 50 million pages\n  in approximately 3 hours using both heuristic and Bayes algorithms. Check\n  [bhlindex] project for an example.\n\n## Installation\n\n### Homebrew on Mac OS X, Linux, and Linux on Windows ([WSL2][wsl])\n\n[Homebrew] is a popular package manager for Open Source software originally\ndeveloped for Mac OS X. Now it is also available on Linux, and can easily\nbe used on MS Windows 10 or 11, if Windows Subsystem for Linux (WSL) is\n[installed][wsl].\n\nNote that [Homebrew] requires some other programs to be installed, like Curl,\nGit, a compiler (GCC compiler on Linux, Xcode on Mac). If it is too much,\ngo to the `Linux and Mac without Homebrew` section.\n\n1. Install Homebrew according to their [instructions][Homebrew].\n\n2. Install `GNfinder` with:\n\n    ```bash\n    brew tap gnames/gn\n    brew install gnfinder\n    # to upgrade\n    brew upgrade gnfinder\n    ```\n\n### Arch Linux AUR package\n\nAUR package is located at `https://aur.archlinux.org/packages/gnfinder`.\nInstall it by hand, or with AUR helpers like `yay` or `pacaur`.\n\n```bash\nyay -S gnfinder\n# or\npacaur -S gnfinder\n```\n\n### Manual Install\n\n`GNfinder` consists of just one executable file, so it is pretty easy to\ninstall it by hand. To do that download the binary executable for your\noperating system from the [latest release][releases].\n\n#### Linux and Mac without Homebrew\n\nMove ``gnfinder`` executable somewhere in your PATH\n(for example ``/usr/local/bin``)\n\n```bash\nsudo mv path_to/gnfinder /usr/local/bin\n```\n\n#### Windows without Homebrew and WSL\n\nIt is possible to use `GNfinder` natively on Windows, without Homebrew or\nLinux installed.\n\nOne possible way would be to create a default folder for executables and place\n``gnfinder`` there.\n\nUse ``Windows+R`` keys\ncombination and type \"``cmd``\". In the appeared terminal window type:\n\n```cmd\nmkdir C:\\bin\ncopy path_to\\gnfinder.exe C:\\bin\n```\n\n[Add ``C:\\bin`` directory to your ``PATH``][winpath] environment variable.\n\n#### Go\n\nInstall Go v1.19 or higher.\n\n```bash\ngit clone git@github.com:/gnames/gnfinder\ncd gnfinder\nmake tools\nmake install\n```\n\n## Configuration\n\nWhen you run ``gnfinder`` command for the first time, it will create a\n[``gnfinder.yml``][gnfinder.yml] configuration file.\n\nThis file should be located in the following places:\n\nMS Windows: `C:\\Users\\AppData\\Roaming\\gnfinder.yml`\n\nMac OS: `$HOME/.config/gnfinder.yml`\n\nLinux: `$HOME/.config/gnfinder.yml`\n\nThis file allows to set options that will modify behaviour of ``GNfinder``\naccording to your needs. It will spare you to enter the same flags for the\ncommand line application again and again.\n\nCommand line flags will override the settings in the configuration file.\n\nIt is also possible to setup environment variables. They will override the\nsettings in both the configuration file and from the flags.\n\n| Settings              | Environment variables       |\n|-----------------------|-----------------------------|\n| BayesOddsThreshold    | GNF_BAYES_ODDS_THRESHOLD    |\n| DataSources           | GNF_DATA_SOURCES            |\n| Format                | GNF_FORMAT                  |\n| InputTextOnly         | GNF_INPUT_TEXT_ONLY         |\n| IncludeInputText      | GNF_INCLUDE_INPUT_TEXT      |\n| Language              | GNF_LANGUAGE                |\n| TikaURL               | GNF_TIKA_URL                |\n| TokensAround          | GNF_TOKENS_AROUND           |\n| VerifierURL           | GNF_VERIFIER_URL            |\n| WithAllMatches        | GNF_WITH_ALL_MATCHES        |\n| WithAmbiguousNames    | GNF_WITH_AMBIGUOUS_NAMES    |\n| WithBayesOddsDetails  | GNF_WITH_BAYES_ODDS_DETAILS |\n| WithOddsAdjustment    | GNF_WITH_ODDS_ADJUSTMENT    |\n| WithPlainInput        | GNF_WITH_PLAIN_INPUT        |\n| WithPositionInBytes   | GNF_WITH_POSITION_IN_BYTES  |\n| WithUniqueNames       | GNF_WITH_UNIQUE_NAMES       |\n| WithVerification      | GNF_WITH_VERIFICATION       |\n| WithoutBayes          | GNF_WITHOUT_BAYES           |\n\n## Usage\n\n### Usage of a web-based application.\n\n`GNfinder` can be found at `https://finder.globalnames.org`.\n\n### Usage of RESTful API\n\nAPI is located at `https://finder.globalnames.org/api/v1`.\n\nBest source for API usage is its [documenation][apidoc].\n\nIf you want to start your own API endpoint (for example on `localhost`, port\n8080) use:\n\n```bash\ngnfinder -p 8080\ncurl localhost:8080/api/v1/ping\n```\n\nTo upload a file and detect names from its content:\n\n```bash\ncurl -v -F verification=true -F file=@/path/to/test.txt https://gnfinder.globalnames.org/api/v1/find\n```\n\n### Usage as a command line app\n\nTo see flags and usage:\n\n```bash\ngnfinder --help\n# or just\ngnfinder\n```\n\nTo see the version of its binary:\n\n```bash\ngnfinder -V\n```\n\nExamples:\n\nStarting as a web-application and an API server on port 8080\n\n```bash\ngnfinder -p 8080\n```\n\nGetting names from a UTF8-encoded file without remote Tika service.\n\n```bash\n# -U flag prevents use of remote Apache Tika service for file conversion to\n# UTF8-encoded plain text\n# -U flag is optional, but it removes unnecessary remote call to Tika.\n\ngnfinder file_with_names.txt -U\n```\n\nGetting names from a UTF8-encoded file in tab-separated values (TSV) format\n\n```bash\ngnfinder file_with_names.txt -U -f tsv\n```\n\nGetting names from a file that is not a plain UTF8-encoded text\n\n```bash\ngnfinder file.pdf\n```\n\nGetting names from a URL\n\n```bash\ngnfinder https://en.wikipedia.org/wiki/Raccoon\n```\n\nGetting unique names from a file in JSON format. Disables `-w` flag.\n\n```bash\ngnfinder file_with_names.txt -u -f pretty\n```\n\nGetting names from a file in JSON format, and using `jq` to process JSON\n\n```bash\ngnfinder file_with_names.txt -f compact | jq\n```\n\nGetting data from a pipe forcing English language and verification\n\n```bash\necho \"Pomatomus saltator and Parus major\" | gnfinder -v -l eng\necho \"Pomatomus saltator and Parus major\" | gnfinder --verify --lang eng\n```\n\nLimit matches to ``NCBI`` and ``Encyclopedia of Life``.  For\nthe list of data source ids go to [gnverifier's data sources page][gnverifier].\n\n```bash\necho \"And Parus major\" | gnfinder -v -l eng -s \"4,12\"\necho \"And Parus major\" | gnfinder --verify --lang eng --sources \"4,12\"\n```\n\nPreserve uninomial names that are also common words.\n\n```bash\necho \"Cancer is a genus\" | gnfinder -A\necho \"America is also a genus\" | gnfinder --ambiguous-uninomials\n```\n\nShow all matches, not only the best result.\n\n```bash\necho \"Pomatomus saltator and Parus major\" | gnfinder -M\necho \"Pomatomus saltator and Parus major\" | gnfinder --all-matches\n```\n\nShow all matches, but only for selected data-sources.\n\n```bash\necho \"Pomatomus saltator and Parus major\" | gnfinder -M -s 1,12\n```\n\nAdjusting Prior Odds using information about found names. They are calculated\nas \"found names number / (capitalized words number - found names number)\".\nSuch adjustment will decrease Odds for texts with very few names, and increase\nodds for texts with a lot of found names.\n\n```bash\ngnfinder -a -d -f pretty file_with_names.txt\n```\n\nReturning 5 words before and after found name-candidate. This flag does is\nignored if unique names are returned.\n\n```bash\ngnfinder -w 5 file_with_names.txt\ngnfinder --words-around 5 file_with_names.txt\n```\n\nGetting data from a file and redirecting result to another file\n\n```bash\ngnfinder file1.txt \u003e file2.json\n```\n\nDetection of nomenclatural annotations\n\n```bash\necho \"Parus major sp. n.\" | gnfinder\n```\n\nReturning found names positions in the number of bytes from the beginning\nof the text instead of the number of UTF-8 characters\n\n```bash\necho \"Это Parus major\" | gnfinder -b\n```\n\nThere is also a [tutorial] about processing many PDF files in parallel.\n\n### Usage as a library\n\n```go\nimport (\n  \"github.com/gnames/gnfinder\"\n  \"github.com/gnames/gnfinder/ent/nlp\"\n  \"github.com/gnames/gnfinder/io/dict\"\n)\n\nfunc Example() {\n  txt := `Blue Adussel (Mytilus edulis) grows to about two\ninches the first year,Pardosa moesta Banks, 1892`\n  cfg := gnfinder.NewConfig()\n  dictionary := dict.LoadDictionary()\n  weights := nlp.BayesWeights()\n  gnf := gnfinder.New(cfg, dictionary, weights)\n  res := gnf.Find(txt)\n  name := res.Names[0]\n  fmt.Printf(\n    \"Name: %s, start: %d, end: %d\",\n    name.Name,\n    name.OffsetStart,\n    name.OffsetEnd,\n  )\n  // Output:\n  // Name: Mytilus edulis, start: 13, end: 29\n}\n```\n\n### Usage as a docker container\n\n```bash\ndocker pull gnames/gnfinder\n\n# run GNfinder server, and map it to port 8888 on the host machine\ndocker run -d -p 8888:8778 --name gnfinder gnames/gnfinder\n```\n\n## Projects based on GNfinder\n\n[gnfinder-plus] allows to work with MS Docs and PDF files without remote\nservices (requires local install of `poppler` package).\n\n[bhlindex] creates an index of scientific names for Biodiversity Heritage\nLibrary (BHL).\n\n[bhlnames] adds synonymy and currently accepted names to searches\nin BHL, connects publications to pages in BHL.\n\n## Development\n\nTo install the latest GNfinder\n\n```bash\ngit clone git@github.com:/gnames/gnfinder\ncd gnfinder\nmake tools\nmake install\n```\n\n## Testing\n\nFrom the root of the project:\n\n```bash\nmake tools\n# run make install for CLI testing\nmake install\n```\n\nTo run tests go to the root directory of the project and run\n\n```bash\ngo test ./...\n\n#or\n\nmake test\n```\n\n[Homebrew]: https://brew.sh/\n[Zenodo DOI]: https://zenodo.org/badge/latestdoi/137407958\n[apidoc]: https://apidoc.globalnames.org/gnfinder\n[bhlindex]: https://github.com/gnames/bhlindex\n[bhlindex]: https://github.com/gnames/bhlindex\n[bhlnames]: https://github.com/gnames/bhlnames\n[doc-img]: https://godoc.org/github.com/gnames/gnfinder?status.png\n[doc]: https://godoc.org/github.com/gnames/gnfinder\n[finder-web]: https://finder.globalnames.org\n[gnfinder gem]: https://rubygems.org/gems/gnfinder\n[gnfinder-plus]: https://github.com/biodiv-platform/gnfinder-plus\n[gnfinder.yml]: https://github.com/gnames/gnfinder/blob/master/gnfinder/cmd/gnfinder.yml\n[gnindex]: https://index.globalnames.org\n[gnverifier]: https://verifier.globalnames.org/data_sources\n[go-report-img]: https://goreportcard.com/badge/github.com/gnames/gnfinder\n[go-report]: https://goreportcard.com/report/github.com/gnames/gnfinder\n[newwinlogo]: https://i.stack.imgur.com/B8Zit.png\n[protobuf releases]: https://github.com/protocolbuffers/protobuf/releases\n[releases]: https://github.com/gnames/gnfinder/releases\n[travis-img]: https://travis-ci.org/gnames/gnfinder.svg?branch=master\n[travis]: https://travis-ci.org/gnames/gnfinder\n[tutorial]: https://globalnames.org/docs/tut-gnfinder/\n[winpath]: https://www.computerhope.com/issues/ch000549.htm\n[wsl]: https://docs.microsoft.com/en-us/windows/wsl/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnames%2Fgnfinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnames%2Fgnfinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnames%2Fgnfinder/lists"}